c# - 在 Unity 中检测碰撞并销毁游戏对象
问题描述
所以我试图在 Unity 中创建一个 2D 游戏,其中游戏对象会在撞到墙壁时被破坏。所以我决定使用 isTrigger 函数并将脚本添加到每个墙上。但是,我不知道为什么游戏对象没有被破坏。我尝试将墙壁和游戏对象的碰撞类型设置为离散和连续,并且我还在墙壁上添加了静态刚体以查看是否有帮助,甚至尝试更改墙壁碰撞体的大小。
这是wallscript的代码
public class wallScript : MonoBehaviour {
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
}
public void OnTrigger2D(Collider2D other)
{
if (other.tag == "player01")
{
Destroy(other.gameObject);
}
}}
ps 即使我删除了条件语句 Destroy() 仍然不起作用
解决方案
您应该使用void OnCollisionEnter2D(Collision2D other) {...}
而不是void OnTrigger2D(Collider2D other)
. 并取消Is Trigger
选中对象 Collider 上的复选框。
推荐阅读
- android - Android 上没有显示测试广告 -AdMob
- javascript - JS - 显示网页来源的函数
- php - Laravel 8 唯一表单验证忽略
- c# - 如何调整模型验证(.NET Core Web Api)响应中的哪些字段?
- azure - 如何使用 Microsoft Graph API 访问其他组织的用户列表?
- javascript - React - Django:TypeError:无法读取未定义的属性“令牌”
- spring-boot - 如何测试从 MessagingGateway 到 ServiceActivator 的完整 IntegrationFlow
- javascript - 正则表达式验证 url 并且不以分号或空格结尾
- c++ - 我应该如何在 qt 中释放信号槽?
- sql-update - 乐观并发——没有问题吗?