【Unity】Transform组件localPosition局部坐标修改问题

本文介绍了在Unity3D中,如何在子物体旋转后,以它的局部坐标系进行移动。通过使用`transform.Translate`API并指定`Space.Self`,或者利用局部向量进行移动,例如CharacterController的`Move`方法,结合键盘输入实现局部移动。关键在于理解`Space.Self`的作用以及如何构建和应用局部向量。

问题:一个物体的子物体旋转后,直接在Inspector面板修改position,不是以局部坐标系进行移动的,使用代码修改旋转后的子物体localPosition,仍然不是以局部坐标系进行移动。

解决:想以子物体的局部坐标系进行局部移动必须使用API或使用局部向量进行移动。

①API方式:

transform.Translate(new Vector3(1, 0, 2), Space.Self); 

必须是用Space.Self

②局部向量方式:

m_CharacterController.Move((m_CharacterControllerTransform.forward * v + m_CharacterControllerTransform.right * h) * Time.deltaTime * speed);

上面是CharacterController的Move方法用指定速度向量进行移动,.forward是局部Z轴,.right是局部X轴 分别乘以一个键盘输入系数v和h 进行获得一个速度向量进行移动Move。你也可以选择直接用这个速度向量应用到localPosition += (速度向量) * Time.deltaTime; 其中speed是我自定义的速度大小值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值