Unity中的物体移动-Transform.Translate

16 篇文章 0 订阅

Transform.Translate通过设置下一步移动的矢量方向和大小进行移动。

有两种移动方式:

1.ADWS控制游戏对象上下左右移动,不涉及旋转;

2.AD通过旋转控制方向,WS控制前后移动,也可以实现受控位移。

无论哪种方式,首先都要获取键盘响应,可以通过Input.GetKey获取,也可以通过Input.GetAxisRaw获取。

第一种方式下的代码如下:

float input_H = Input.GetAxisRaw("Horizontal");   //获取X方向的移动方向,如果输入A,输出-1;如果输入D,输出1。
float input_V = Input.GetAxisRaw("Vertical");     //获取Z方向的移动方向,如果输入W,输出1;如果输入S,输出-1。

Vector3 v = new Vector3 (input_H, 0, input_V); //新建移动向量
v = v.normalized;                              //如果是斜线方向,需要对其进行标准化,统一长度为1
v = v * speed * Time.deltaTime;                //乘以速度调整移动速度,乘以deltaTime防止卡顿现象
transform.Translate (v);                       //移动

第二种方式下的代码如下:

float input_H = Input.GetAxisRaw("Horizontal");  //
float input_V = Input.GetAxisRaw ("Vertical");   //

transform.Rotate (new Vector3 (0, input_H, 0));   //绕y轴旋转,A键顺时针;D键逆时针
float curSpeed = speed * input_V * Time.deltaTime; 
transform.Translate (transform.forward * curSpeed,Space.World);//沿着物体前后方向移动, 由于使用了forward,因此要指定移动的坐标系为全局坐标

最后一句代码也可以改为:

transform.Translate (new Vector3(0,0,curSpeed));//默认沿着物体的z轴移动,即为前后方向

上述代码均需要在update方法中实现。 

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值