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;
}
}
}
碰撞的两个对象都是触发器,抱歉没有统一编程超过一年
答案 0 :(得分: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与它们所附着的特定图层发生碰撞。有关详情,请点击here。