【问题标题】:edit Gamobject with just Collider reference in Unity在 Unity 中仅使用 Collider 参考编辑 Gameobject
【发布时间】:2020-06-04 14:59:16
【问题描述】:

我想捡起一只绵羊并将其移到玩家的头部,方法是将它作为一个空游戏对象的父级。这一切都很好,除了绵羊没有移动到头部而是在养育时保持在他的位置。有什么方法可以仅通过它的对撞机参考来改变绵羊的位置吗?对不起,如果这是一个菜鸟问题,我是初学者,我希望你能帮助我!提前致谢!

if (Input.GetKey(KeyCode.Space)) {
            if (targetTime <= 0.0f)
            {
                targetTime = 2f;
                if (inhand == true)
                {
                    InHand.transform.SetParent(null);
                    inhand = false;
                    Debug.Log("Abgelegt");
                }
                else
                {
                    Collider2D[] sheepsinrange = Physics2D.OverlapCircleAll(attackPos.position, attackRange, whatIsEnemies);
                    if (sheepsinrange.Length > 0)
                    {
                        InHand = sheepsinrange[0];
                        InHand.transform.SetParent(sheepPos);
                        inhand = true;
                        Debug.Log(sheepsinrange + " aufgenommen");
                    }
                }
            }
        }
    }

【问题讨论】:

    标签: c# unity3d gameobject


    【解决方案1】:

    这很简单,一旦你设置了父级,你只需要重置它的本地位置。

    您可以手动设置它 InHand.transform.localPosition = vector3.zero; 或者由于您使用 SetParent() 您可以使用第二个参数 -> SetParent(Transform parent, bool worldPositionStays) 默认为 true,因此它保持在同一位置。所以你想要:

    InHand.transform.SetParent(sheepPos, false);

    【讨论】:

    • 谢谢,但是当我将它设置为 false 并手动转换它时它才有效,否则它会出于某种明显的原因改变它的大小。但我现在有了解决方案,谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-05-03
    • 1970-01-01
    • 2023-03-20
    • 1970-01-01
    • 1970-01-01
    • 2022-01-23
    • 1970-01-01
    相关资源
    最近更新 更多