OnCollisionEnter不会触发

Pau*_*ger 0 collision-detection unity-game-engine

using UnityEngine;
using System.Collections;

public class changedirection : MonoBehaviour {

    void OnCollisionEnter(Collision col)
    {
        if (col.gameObject.name == "soldier")
        {
            GameObject go = col.gameObject;
            Move move = go.GetComponent<Move>();
            move.direction = -1;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

碰撞的两个物体都是触发器,抱歉没有统一编程超过一年

Ser*_*sch 6

静态对撞机不会相互碰撞.

有一个表显示何时在docs.unity3d.com上触发碰撞和触发事件.但他们更新了网站,现在我找不到它.我还有本地的.所以,在这里.

碰撞动作矩阵

根据两个碰撞对象的配置,可能会发生许多不同的操作.下面的图表概述了两个碰撞对象可以预期的结果,这些对象基于附加到它们的组件.某些组合仅导致两个对象中的一个受到碰撞的影响,因此请记住标准规则 - 物理将不会应用于未附加刚体的对象.

发生冲突检测并在发生冲突时发送消息

???????????????????????????????????????????????????????????????????????????????????
?           ? Static   ? Rigidbody ? Kinematic ? Static   ? Rigidbody ? Kinematic ?
?           ? Collider ? Collider  ? Rigidbody ? Trigger  ? Trigger   ? Rigidbody ?
?           ?          ?           ? Collider  ? Collider ? Collider  ? Trigger   ?
?           ?          ?           ?           ?          ?           ? Collider  ?
???????????????????????????????????????????????????????????????????????????????????
? Static    ?          ?     Y     ?           ?          ?           ?           ?
? Collider  ?          ?           ?           ?          ?           ?           ?
???????????????????????????????????????????????????????????????????????????????????
? Rigidbody ?     Y    ?     Y     ?     Y     ?          ?           ?           ?
? Collider  ?          ?           ?           ?          ?           ?           ?
???????????????????????????????????????????????????????????????????????????????????
? Kinematic ?          ?     Y     ?           ?          ?           ?           ?
? Rigidbody ?          ?           ?           ?          ?           ?           ?
? Collider  ?          ?           ?           ?          ?           ?           ?
???????????????????????????????????????????????????????????????????????????????????
? Static    ?          ?           ?           ?          ?           ?           ?
? Trigger   ?          ?           ?           ?          ?           ?           ?
? Collider  ?          ?           ?           ?          ?           ?           ?
???????????????????????????????????????????????????????????????????????????????????
? Rigidbody ?          ?           ?           ?          ?           ?           ?
? Trigger   ?          ?           ?           ?          ?           ?           ?
? Collider  ?          ?           ?           ?          ?           ?           ?
???????????????????????????????????????????????????????????????????????????????????
? Kinematic ?          ?           ?           ?          ?           ?           ?
? Rigidbody ?          ?           ?           ?          ?           ?           ?
? Trigger   ?          ?           ?           ?          ?           ?           ?
? Collider  ?          ?           ?           ?          ?           ?           ?
???????????????????????????????????????????????????????????????????????????????????

触发消息在发生冲突时发送

???????????????????????????????????????????????????????????????????????????????????
?           ? Static   ? Rigidbody ? Kinematic ? Static   ? Rigidbody ? Kinematic ?
?           ? Collider ? Collider  ? Rigidbody ? Trigger  ? Trigger   ? Rigidbody ?
?           ?          ?           ? Collider  ? Collider ? Collider  ? Trigger   ?
?           ?          ?           ?           ?          ?           ? Collider  ?
???????????????????????????????????????????????????????????????????????????????????
? Static    ?          ?           ?           ?          ?     Y     ?     Y     ?
? Collider  ?          ?           ?           ?          ?           ?           ?
???????????????????????????????????????????????????????????????????????????????????
? Rigidbody ?          ?           ?           ?    Y     ?     Y     ?     Y     ?
? Collider  ?          ?           ?           ?          ?           ?           ?
???????????????????????????????????????????????????????????????????????????????????
? Kinematic ?          ?           ?           ?          ?           ?           ?
? Rigidbody ?          ?           ?           ?    Y     ?     Y     ?     Y     ?
? Collider  ?          ?           ?           ?          ?           ?           ?
???????????????????????????????????????????????????????????????????????????????????
? Static    ?          ?           ?           ?          ?           ?           ?
? Trigger   ?          ?     Y     ?     Y     ?          ?     Y     ?     Y     ?
? Collider  ?          ?           ?           ?          ?           ?           ?
???????????????????????????????????????????????????????????????????????????????????
? Rigidbody ?          ?           ?           ?          ?           ?           ?
? Trigger   ?     Y    ?     Y     ?     Y     ?    Y     ?     Y     ?     Y     ?
? Collider  ?          ?           ?           ?          ?           ?           ?
???????????????????????????????????????????????????????????????????????????????????
? Kinematic ?          ?           ?           ?          ?           ?           ?
? Rigidbody ?     Y    ?     Y     ?     Y     ?    Y     ?     Y     ?     Y     ?
? Trigger   ?          ?           ?           ?          ?           ?           ?
? Collider  ?          ?           ?           ?          ?           ?           ?
???????????????????????????????????????????????????????????????????????????????????

基于层的碰撞检测

在Unity 3.x中,我们引入了一种称为基于图层的碰撞检测,现在您可以选择性地告诉Unity GameObjects与它们所附着的特定图层发生碰撞.欲了解更多信息,请点击这里.