unity3d 移动

 

//直接改变位移
transform.position += Vector3.forward * Time.deltaTime * 5;

//使用Translate改变位移
transform.Translate(Vector3.forward * 5 * Time.deltaTime);

//使用插值
transform.position = Vector3.Lerp(transform.position,GameObject.Find("Sphere").transform.position,0.1f);//因为position一直都被更新到最新,相当于Lerp(1,2,0.5)返回1.5,然后变成Lerp(1.5,2,0.5)。

//使用轴
float h = Input.GetAxis("Horizontal");//-1,1
float v = Input.GetAxis("Vertical");//-1,1
transform.position += new Vector3(h,0,v)*Time.deltaTime*10;//匀速运动

//使用刚体
float h = Input.GetAxis("Horizontal");//-1,1
float v = Input.GetAxis("Vertical");//-1,1
GetComponent<Rigidbody>().AddForce(new Vector3(h,0,v)*Time.deltaTime*10);

//使用MoveTowards
transform.position = Vector3.MoveTowards(transform.position,GameObject.Find("Sphere").transform.position, 0.01f);

//使用CharacterController
GetComponent<CharacterController>().SimpleMove(new Vector3(0,0,1)*Time.deltaTime*100);

例如:摄像机跟随。
public class Test: MonoBehaviour
{
    public Transform cubePos;//cube的位置
    public float smoth;//摄像机移动速度
    Vector3 targetPos;//摄像机最终的位置
    private void Start()
    {
        transform.position = cubePos.position + Vector3.back * 10;//将摄像机移动到cube位置的后面一点
    }
    private void LateUpdate()
    {
        targetPos = cubePos.position + Vector3.back * 10;//摄像机最终的位置,即cube的位置+一个距离
        transform.position = Vector3.Lerp(transform.position, targetPos, Time.deltaTime* smoth);
    }
}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值