unity3d - 为什么在 Unity 中没有调用 OnCollisonEnter2D?
问题描述
我有 2 个对象,一个以恒定速度向下移动,一个由玩家控制的对象。两个对象都有 BoxCollider2D 和 Rigidbody2D 但未调用附加到可控对象的 OnCollisonEnter2D 方法。两个对象都在相互碰撞,可见相互碰撞,只要冻结旋转未打开,它们就会旋转。Bellow 是 OnCollisonEnter2D 方法的代码。我究竟做错了什么?
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
公共类碰撞:MonoBehaviour { public int Score;
public void OnCollisonEnter2D(Collider2D collision)
{
GameObject collider = collision.gameObject;
Debug.Log("Collided");
//checks to see if the block is correct;
if (collider.GetComponent<BlockBehavior>().correct)
{
Destroy(collision.gameObject);
Score++;
}
else
{
this.gameObject.GetComponent<Movement>().gameOver = true;
}
}
}
解决方案
我看到您对事件的命名已关闭。它应该是OnCollisionEnter2D。此外,参数不匹配。
它应该是:
private void OnCollisionEnter2D(Collision2D collision)
{
GameObject collider = collision.gameObject;
Debug.Log("Collided");
//checks to see if the block is correct;
if (collider.GetComponent<BlockBehavior>().correct)
{
Destroy(collision.gameObject);
Score++;
}
else
{
this.gameObject.GetComponent<Movement>().gameOver = true;
}
}
我也将所有这些类型的事件标记为私有(约定),因为您不希望将其暴露给另一个脚本。
推荐阅读
- python - 如何使用 NN 不断向张量添加值?
- python - Python 用户输入 - 接受多个值然后中断
- mockito - 使用 Maven 进行 Mockito 测试
- php - 在php中按StartDate升序对扩展数据数组进行排序
- powershell - Powershell 7 中是否有等效的 New-EventLog?
- c++ - IMFMediaBuffer 到 IMFDXGIBuffer 上的 QueryInterface 返回 E_NOINTERFACE
- angular - 使用 ngx-bootstrap datepicker 从星期日开始一周而不是星期一
- javascript - 如何在 Sequelize 模型中制作临时对象?
- python - Python discord bot 使用 discord.py 问题
- python - 在文本挖掘中合并 int64 和对象列