首页 > 解决方案 > 粘在墙上的 Unity 2D 斧头

问题描述

问题是我已经投掷了斧头。问题是我怎样才能让斧头粘在墙上?当斧头撞到墙上时,不是斧头,有时是斧柄或斧头。抱歉英语不好。谢谢回答。

标签: c#unity3d2d

解决方案


斧头应该由两个独立的网格组成,因此您可以使用两个 MeshCollider,一个用于手柄,一个用于刀片。如果它是一个网格,您可以创建两个空的游戏对象,因为孩子给它们原始碰撞器来近似网格。

斧头预制件的层次结构应如下所示:

斧头(刚体)

  • 手柄(MeshFilter、MeshRenderer、MeshCollider)
  • 刀片(MeshFilter、MeshRenderer、MeshCollider)

或这个:

斧头(刚体、MeshFilter、MeshRenderer)

  • 处理
    • PrimitiveCollider1(例如 SphereCollider)
    • PrimitiveCollider2(例如 BoxCollider)
    • 也只是原始对撞机来近似其形状

我希望斧头投掷是通过物理原理,所以当手柄撞到墙上时它已经看起来不错了?

为了让刀片粘在墙上,将这样的脚本添加到上面层次结构中的刀片中:

public DisableRigidbodyOnCollision
{
    [SerializeField] private new Rigidbody rigidbody; // assign in the inspector

    private void OnCollisionEnter(Collision collision)
    {
        // add check if we hit the wall and not something else
        // e.g. via the name, tag or layer of collision.gameObject
        rigidbody.enabled = false;
        // alternatively, freeze the rigidbody or make it's velocity 0 and make it not be affected by gravity, etc.
    }
}

推荐阅读