【问题标题】:In Unity, I want to destroy my square when it collides with circle在 Unity 中,当我的正方形与圆形碰撞时,我想摧毁它
【发布时间】:2021-08-14 19:36:20
【问题描述】:

1 我的正方形有一个 2D 刚体和一个 2D 盒子对撞机。 我的圈子有一个 2D 盒子对撞机。 游戏管理器脚本只是生成它们的代码。 我的捕手脚本只是将圆圈从左向右移动。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class ArtDestroy : MonoBehaviour
{
  private void OnCollisionEnter(Collision collision)
  {
      if (collision.gameObject.CompareTag("Art"))
      {
        Destroy(collision.gameObject);
      }
  }
}

【问题讨论】:

    标签: c# unity3d 2d collision destroy


    【解决方案1】:

    PhysicsPhysics2D 在 Unity 中是独立的,不会相互交互。

    OnCollisionEnter2D(Collision2D collision2d)属于Physics2D,只响应Physics2D(BoxCollider2D、CircleCollider2D、PolygonCollider2D、Rigidbody2D等)

    OnCollisionEnter(Collision collision)属于Physics,只响应Physics(BoxCollider、SphereCollider、MeshCollider、Rigidbody等)

    当你应该使用OnCollisionEnter2D(Collision2D collision)时,你正在使用OnCollisionEnter(Collision collision)

    【讨论】:

      【解决方案2】:
      using System.Collections;
      using System.Collections.Generic;
      using UnityEngine;
      using UnityEngine.UI;
      
      public class ArtDestroy : MonoBehaviour
      {
          // Use OnCollisionEnter2D for 2D!
          private void OnCollisionEnter2D(Collision2D collision)
          {
              if(collision.gameObject.CompareTag("Art"))
              {
                  Destroy(collision.gameObject);
              }
          }
      }
      

      【讨论】:

        【解决方案3】:

        对于 2D 项目,您需要使用 MonoBehaviour.OnCollisionEnter2D(Collision2D)。

        另外,我不知道你是怎么插入这段代码的,你下次可以按 ctrl + k 并粘贴 sn-p

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-09-03
          • 2014-04-08
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多