在 Unity 中仅使用 Collider 参考编辑 Gameobject
edit Gamobject with just Collider reference in Unity
我想捡起一只绵羊,通过将它作为一个空游戏对象的父级,将它移动到玩家的头上。这一切都很好,除了绵羊没有移动到头部而是在养育时保持在他的位置。有什么方法可以仅通过对撞机参考来改变绵羊的位置吗?对不起,如果这是一个菜鸟问题,我是初学者,希望你能帮助我!提前致谢!
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");
}
}
}
}
}
非常简单,一旦你设置了父级,你只需要重置它的本地位置。
您可以手动设置 InHand.transform.localPosition = vector3.zero;
或者因为您使用 SetParent() 您可以使用第二个参数 -> SetParent(Transform parent, bool worldPositionStays) 默认情况下它是 true 所以它保持在相同的位置。所以你想要:
InHand.transform.SetParent(sheepPos, false);
我想捡起一只绵羊,通过将它作为一个空游戏对象的父级,将它移动到玩家的头上。这一切都很好,除了绵羊没有移动到头部而是在养育时保持在他的位置。有什么方法可以仅通过对撞机参考来改变绵羊的位置吗?对不起,如果这是一个菜鸟问题,我是初学者,希望你能帮助我!提前致谢!
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");
}
}
}
}
}
非常简单,一旦你设置了父级,你只需要重置它的本地位置。
您可以手动设置 InHand.transform.localPosition = vector3.zero; 或者因为您使用 SetParent() 您可以使用第二个参数 -> SetParent(Transform parent, bool worldPositionStays) 默认情况下它是 true 所以它保持在相同的位置。所以你想要:
InHand.transform.SetParent(sheepPos, false);