【Unity】子物体坐标问题

本文探讨在Unity中,动态生成的子物体如Armature_Left_Hand和Armature_Right_Hand作为Armature子物体时,会出现自动缩小为原始大小的0.1倍的问题。这种现象导致坐标位置错误,但如果不修改子物体的`transform.localScale`,它们会保持相对正确的位置。参考Unity3D研究院资料,设置`transform.parent`会导致坐标混乱。

Armature是父物体,Armature_Left_Hand和Armature_Right_Hand都是Armature的子物体

动态生成的Armature物体

动态生成的Armature_Left_Hand物体,并使其为Armature物体的子物体

(Armature_Right_Hand与Armature_Left_Hand相似,因此不赘述)

Armature_Left_Hand物体的预制体,ALH动态生成的物体是照此预制体生成的


综上可得,把一个物体设置为另外一个问题的子物体,会自动缩小,为原来的0.1倍(倍数暂定)


错误结果如下所示

Unity中,父物体物体坐标轴有着紧密的联系。当一个物体成为另一个物体物体时,物体的位置、旋转和缩放等变换都是相对于父物体坐标系而言的。 从位置方面来看,物体坐标是相对坐标。例如当设置一个立方体物体坐标为(0, 0, 0)时,若该立方体处于世界中心坐标位置,这里指的是立方体的轴心点位置是(0, 0, 0)坐标,而当这个立方体作为物体时,其坐标是相对于父物体的轴心点而言的。也就是说,物体的位置是在父物体坐标轴基础上进行偏移的。 在旋转方面,物体的旋转也是相对于父物体的旋转状态。父物体的旋转会影响物体的朝向,物体的旋转是在父物体旋转后的坐标轴体系下进行的。 对于缩放,父物体的缩放同样会对物体产生影响。如果父物体进行了缩放操作,物体也会相应地在父物体缩放后的坐标轴体系下表现出缩放效果。 父物体坐标轴就像是一个基础框架,物体的所有变换都是基于这个框架进行的。这种父关系使得在场景中组织和管理物体变得更加方便,可以通过对父物体的操作来批量控制物体的变换。例如移动父物体时,所有物体都会随着父物体一起移动,就如同它们是一个整体一样。 ### 代码示例 以下是一个简单的Unity脚本示例,用于演示父物体物体坐标轴关系: ```csharp using UnityEngine; public class ParentChildAxisExample : MonoBehaviour { public Transform parentObject; public Transform childObject; void Start() { // 设置父物体的位置 parentObject.position = new Vector3(2f, 0f, 0f); // 设置物体相对于父物体的位置 childObject.localPosition = new Vector3(1f, 0f, 0f); // 输出物体的世界坐标 Debug.Log("Child object world position: " + childObject.position); } } ``` 在这个示例中,首先设置了父物体的位置,然后设置了物体相对于父物体的位置,最后输出了物体的世界坐标
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值