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);
}

浙公网安备 33010602011771号