【问题标题】:Unity object orientation in player hand changes depending on angle of object pick up玩家手中的 Unity 对象方向根据物体拾取的角度而变化
【发布时间】:2020-11-18 05:25:53
【问题描述】:

我有一个角色可以在游戏中拿起斧头。出于某种原因,如果从不同的角度接近物品,玩家会在不同的位置拿起斧头。如果我做到了让斧头出现在玩家手中,为什么会发生这种情况。我使用斧头的中心变换位置并将其放置在手的父对象上。我至少会期望一些一致性,因为它不应该是随机的,因为代码。

testObject = Instantiate(toCreate) as GameObject;
testObject.transform.parent = arm.transform;
testObject.transform.position = arm.transform.position;

【问题讨论】:

    标签: unity3d transform gameobject


    【解决方案1】:
        testObject = Instantiate(toCreate) as GameObject;
        testObject.transform.parent = arm.transform;
        testObject.transform.localPosition = Vector3.zero;
        testObject.transform.localRotation = Quaternion.identity;
    

    【讨论】:

    • 这似乎适用于斧头,但对于我拥有的其他物品,类似于斧头,需要垂直旋转,它似乎不起作用。我查了 Quaternion.identity;这个四元数对应于“无旋转”——对象与世界轴或父轴完美对齐。这是否意味着根本不旋转对象?
    • 如果 ax 只跟随父级,它的 localRotaion 可以是一个常数值,例如我只是设置身份,你可以设置任何值。例如:Quaternion.Euler(90, 0, 0) 在您的情况下垂直旋转。 docs.unity3d.com/ScriptReference/Transform-localRotation.html LocalRotaion 描述:“变换的旋转'相对于'父级的变换旋转”
    • 感谢蒂姆,我能够使用 Quaternion.Euler(90, 0, 0) 并为我的项目正确设置。它可以正常工作 90% 的时间。但是我仍然可以从不同的角度接近物体,它会反转图像,底部有斧头。有没有办法让 Unity 知道什么是顶部和底部,因为如果以错误的角度接近和抓住,有时 90,0,0,0 会将斧头反转到错误的方向。
    【解决方案2】:

    行为将根据您何时将其设为另一个对象的子对象(设置父对象)而改变。 最好的办法可能是在设置父对象之前设置位置和旋转。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-26
      相关资源
      最近更新 更多