为什么Unity 2017.3.0f3不会认可Ontrigger2D / OnCollision2D?

时间:2018-03-28 03:38:01

标签: c# unity3d triggers collision

我在" Magnet"上有一个2d的盒子对撞机。精灵和圆形对撞机在" Ball"精灵。在Magnet精灵上,我打开了#34; Is Trigger"并尝试了一些刚体设置:运动学,静态和动态。球上还有一个动态刚体。我使用Unity 2017.3.0f3。

暂时我只想检查物体是否已进入磁铁对撞机并记录物体的名称。

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

public class Magnetism : MonoBehaviour {

    void OnTriggerEnter2D(Collider2D other)
    {
        Debug.Log(other.name);
    }

}

我也尝试使用OnCollisionEnter(碰撞其他),它仍然没有做任何事情。奇怪的是我也没有错误。哦,也在一个论坛中,我发现有人提到使用onCollisionEnter / onTriggerEnter。这对我来说也不起作用。

3 个答案:

答案 0 :(得分:1)

这是确保您的碰撞有效的清单

  1. 确保您的游戏对象所在的图层在项目设置 - >下设置为对齐器。图层碰撞矩阵。
  2. 确保至少有一个碰撞体附有Rigidbody2D(不是刚体,必须是2D)
  3. 两个对象都必须有Collider2D
  4. 确保Magnet的对撞机将IsTrigger设置为true
  5. 存在IsTriggerEnter2D函数的脚本必须位于具有collider2D的同一对象上(同时确保将此对撞机设置为触发器)
  6. 确保对撞机的大小不是0或足够大。如果先创建一个2D精灵并稍后放入实际的精灵图像
  7. ,就会发生这种情况
  8. 确保所有组件和游戏对象都已启用/激活
  9. 我知道其中一些是微不足道的,但仍然容易错过

    编辑:还有一件事; rigidbody2D必须将模拟设置为true。

答案 1 :(得分:0)

我有两个物体(带有盒子2D的磁铁和带圆圈的球)。磁铁对象附有一个与您相同的脚本。一切都按预期工作。 (经过您的版本测试。)

尝试仔细检查所有内容,否则,尝试创建一个新项目并查看是否发生。如果这不起作用,请使用2017.3.1f1进行测试。如果一切都不起作用,我非常怀疑,向Unity发送错误报告,他们会帮助你。

答案 2 :(得分:0)

确保您使用的所有碰撞器和刚体都是2D

为了OnTriggerEnter2D能够正常工作,至少有一个碰撞者必须激活Is Trigger

要进行快速测试,您可以禁用所有刚体,并仅检查激活的碰撞器。

脚本代码非常好,应该可以使用。