【问题标题】: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】:
Physics 和 Physics2D 在 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