unity游戏开发中遇到的关于translate与position在人物移动和朝向上问题

问题描述

在物体移动时方向键能改变物体的朝向,但是不能准确朝着朝向移动。特别是想让他它后走时,朝向是往后了,但是向前走了。

问题总结

这里涉及到transform.translate与position的的区别——代码中translate是默认相对自己物体的坐标系而不是像position那样相对于世界坐标系。因此只要使用translate时,把参数修改为相对于世界坐标系即可,或者使用transform.position函数。这个区别实际上是十分基础的,但是我忽视了:(


具体过程

// before
input = input.normalized;
transform.Translate(input * speed * Time.deltaTime);
if (input.magnitude > 0.1f)
{
    transform.forward = input;
}

当我按“下”方向键想面朝后方然后往后移动时 ,发现只能面朝后方然而向前移动。原因就是此时它是相对于自身的坐标系的。当我面朝后方时,我按了“下”,此时也就是往我面朝方向的反方向移动了。

 

// after
input = input.normalized;

// 方法1
transform.Translate(input * speed * Time.deltaTime, Space.World);
// 方法2
//transform.position += input * speed * Time.deltaTime;

if (input.magnitude > 0.1f)
{
    transform.forward = input;
}

修改后,就能正常移动啦。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值