Unity 物体围绕圆周运动

用Unity开发游戏中,经常会有搜寻的功能,这时候我们需要一个放大镜的图标在那圆周运动。写了相关脚本直接挂载在要圆周运动的物体上即可:

using UnityEngine;
using System.Collections;

public class RoundAction : MonoBehaviour
{
    public float _radius_length;
    public float _angle_speed;

    private float temp_angle;

    private Vector3 _pos_new;

    public Vector3 _center_pos;

    public bool _round_its_center;

    // Use this for initialization
    void Start()
    {
        if (_round_its_center)
        {
            _center_pos = transform.localPosition;
        }
    }

    // Update is called once per frame
    void Update()
    {
        temp_angle += _angle_speed * Time.deltaTime; // 

        _pos_new.x = _center_pos.x + Mathf.Cos(temp_angle) * _radius_length;
        _pos_new.y = _center_pos.y + Mathf.Sin(temp_angle) * _radius_length;
        _pos_new.z = transform.localPosition.z;

        transform.localPosition = _pos_new;
    }
}
时间: 2024-10-05 18:03:14

Unity 物体围绕圆周运动的相关文章

Unity 相机围绕物体指定观察角度和位置

问题:相机始终围绕着O观察,现在从A坐标和视角 运动旋转 到B坐标和视角.. 条件:abcd这个矩形盒差不多是物体O的顶视图尺寸,A点箭头是相机所在的起点和角度,B点为目标点需要观察的角度. 直接直线移动相机并按照AB夹角的差去移动和扭转相机的话 镜头很容易翻转!相机不可能总是在关注O对象!难受死了! 我能想到的最优解决办法: 水平围绕+position插值.angle插值!插值时使用Lerp函数,而非直接递增角度.递增位置! 我之所以最后这么"愉快"的决定实在是由于数学捉急,除非会构

Unity相机围绕物体

using DG.Tweening;using UnityEngine; public class FollowTrackingCamera : MonoBehaviour{ public static FollowTrackingCamera _Instance; // Camera target to look at. //相机跟随目标 public Transform target; //相机旋转角度 public Vector3 CameraRotation; // Exposed va

unity3d一个物体围绕另一个物体旋转

可以使用RotateAround,代码如下: transform.RotateAround (Sun.transform.position, Vector3.down, 5); 其中第一个参数是要围绕哪一个对象来旋转,Sun.transform.position表示的是Sun的中心点. 第二个参数是指要围绕哪一个轴来旋转,Vector3.down表示围绕y轴负向旋转(也可以理解为逆时针),如果是Vector.up表示顺时针. 第三个参数之每一帧移动的角度,这里为5度.

物体围绕某个点旋转一定角度

转自:https://dawnarc.com/2016/06/ue4%E7%BA%BF%E6%80%A7%E4%BB%A3%E6%95%B0%E7%89%A9%E4%BD%93%E5%9B%B4%E7%BB%95%E6%9F%90%E4%B8%AA%E7%82%B9%E6%97%8B%E8%BD%AC%E4%B8%80%E5%AE%9A%E8%A7%92%E5%BA%A6/ 2D上的点围绕某另一个点旋转: If you rotate point (px, py) around point (ox

Unity物体平滑跟随

transform.position = Vector3.SmoothDamp(Vector3 a,Vector3 b, ref Vector3 c, float d); 参数: a:当前位置 b:目标位置 c:当前速度(定义一个变量传入就行了,这个不能更改) d:完成(当前位置 - 目标位置)的距离所花费的时间

Unity物体上下反复漂浮效果

using UnityEngine; using System.Collections; // 主界面的开始按钮使用该脚本,控制上下来回浮动 public class Floating : MonoBehaviour { float radian = 0; // 弧度 float perRadian = 0.03f; // 每次变化的弧度 float radius = 0.8f; // 半径 Vector3 oldPos; // 开始时候的坐标 // Use this for initializ

Unity 物体逐渐透明DOFade

private void Awake() { Invoke("transParent", 1); } private void transParent() { for (int i = 0; i < transform.childCount; i++) { if(transform.GetChild(transform.childCount - i - 1).GetComponent<MeshRenderer>().material!=null) transform.

Unity 物理引擎实现匀速圆周运动

摘要 本文主要讲述如何利用Unity物理引擎实现匀速圆周运动. 前言 首先,我们可以利用Unity API,Transform.RotateAround来实现匀速圆周运动.但是这个实现,我觉得不过瘾,因为你只是了解一个API,并没有学到任何其他的知识.接下讲一点有意思东西. 物理知识 1.定义: 质点沿圆周运动,如果在任意相等的时间里通过的圆弧长度都相等,这种运动就叫做"匀速圆周运动",亦称"匀速率圆周运动".因为物体作圆周运动时速率不变,但速度方向随时发生变化.所

unity实现一个物体绕着某点旋转

transform.RotateAround(o.transform.position,Vector3.up,20*Time.deltaTime);transform.Rotate(Vector3.up, 20*Time.deltaTime, Space.World); RotateAround():让物体围绕招某点旋转,参数分别为,旋转的点坐标,旋转的方向,旋转的速度. Rotate():让物体自传,参数分别为:旋转的方向,旋转的速度,旋转的坐标系(世界坐标系和自身坐标系). 原文地址:htt