unity物体移动

Time.deltaTime:完成上一帧所用的时间(以秒为单位)(只读)。

此属性提供当前帧和上一帧之间的时间。

使用 Time.deltaTime 可在 y 方向以 n 单位/秒的速度移动 GameObject。将 n 乘以 Time.deltaTime,然后与 y 分量相加。

改变坐标

1.1 Transform.Position

通过Transform.Position组件移动物体

transform.position += Vector3.forward * Time.deltaTime;
//Vector3.forward==Vector3(0, 0, 1)

1.2 Transform.Translate

该方法可以将物体从当前位置,移动到指定位置,并且可以选择参照的坐标系。 当需要进行坐标系转换时,可以考虑使用该方法以省去转换坐标系的步骤。

//移动的时候物体以世界坐标系为移动参考方向
//transform.Translate(new Vector3(0,0,1)*Time.deltaTime,Space.World);
//移动的时候物体以自身坐标系为移动参考方向()
transform.Translate(new Vector3(0, 0, 1) * Time.deltaTime);
Vector3.Lerp , Vector3.Slerp , Vector3.MoveTowards

//物体从A点到B点的线性插值范围在(0,0.5f)之间,最大为0.5f  
//transform.position= Vector3.Lerp(transform.position, B.position, 0.5f);  
//球形插值t的值在[0,0.5]  
//transform.position= Vector3.Slerp(transform.position, B.position, 0.5f);  
//相对于lerp,MoveTowards增加了一个移动的最大值  
transform.position = Vector3.MoveTowards(transform.position, B.position, 0.5f);  
## 直接改变速度
gameObject.GetComponent<Rigidbody>().velocity = Vector3.forward * MoveSpeed;
```c#
float speed;
private void FixedUpdate()  
{  
    cubeRigdboy.velocity = new Vector3(0, 0, speed);  
}

添加力Addfore

给刚体添加一个方向的力,这种方式适合模拟物体在外力的作用下的运动状态。

public void AddForce (Vector3 force, ForceMode mode= ForceMode.Force);

void FixedUpdate() {  
   rigidbody.AddForce(Vector3.forward * 10);  
    }  

指定移动位置

public void MovePosition (Vector3 position);
刚体受到物理约束的情况下,移动到指定点。

private Vector3 speed = new Vector3(3, 0, 0);  
    void FixedUpdate() {  
        rigidbody.MovePosition(rigidbody.position + speed * Time.deltaTime);  
    } 
posted @ 2020-12-21 18:39  melt00  阅读(63)  评论(0)    收藏  举报