unity 物体间的碰撞检测
来源:互联网 发布:万国数据科技公司怎样 编辑:程序博客网 时间:2024/04/29 01:50
游戏中,当人物碰到金币的时候,可能会播放一个动画,并且金币消失,
那么,如何判断金币和人物发生了碰撞呢?
我们用一个例子来说明一下物体间的碰撞。
using UnityEngine;
using System.Collections;
public class collisionTest : MonoBehaviour {
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
if (Input.GetKey (KeyCode.A))
{
transform.Translate(Vector3.right * -1 * Time.deltaTime);
}
if (Input.GetKey(KeyCode.D))
{
transform.Translate(Vector3.right * 1 * Time.deltaTime);
}
}
void OnCollisionEnter(Collision collisionP)
{
Debug.Log ("开始进入碰撞:" + collisionP.gameObject.name);
}
void OnCollisionStay(Collision collisionP)
{
Debug.Log ("碰撞进行中:" + collisionP.gameObject.name);
}
void OnCollisionExit(Collision collisionP)
{
Debug.Log ("碰撞停止:" + collisionP.gameObject.name);
}
void OnTriggerEnter(Collider other)
{
Debug.Log ("Trigger 开始进入碰撞:" + other.gameObject.name);
}
void OnTriggerStay(Collider other)
{
Debug.Log ("Trigger 碰撞进行中:" + other.gameObject.name);
}
void OnTriggerExit(Collider other)
{
Debug.Log ("Trigger 碰撞停止:" + other.gameObject.name);
}
}
我们为人物添加一个简单的脚本,当我们点击键盘的 A和 D时,可以左右移动。
但是,在这种情况下,有可能碰撞检测根本没有响应,
原因是没有加 Rigidbody,
我们之前,发现有一个标记,
Is Trigger ,
这个很重要,
如果一个物体,打上了 Trigger的标记,
那么,当其有碰撞发生时,
响应的是
如果没有打上 Trigger标记,
那么,响应的是
OnCollisionEnter,OnCollisionStay,OnCollisionExit,
那么,同样都是碰撞,Trigger有什么区别吗?
用一个手电筒,发射出一道光,
这道光和某个物体发生碰撞时,
不会不小心把这个物品碰掉地上,
而如果是用晾衣杆,不小心碰到某个物品,
那么,就有可能会把这个物品给碰倒。
参数的意思是,
是谁“碰”了 “我”。
游戏中,人物奔跑时,碰到的金币,
用 Trigger 就相对合适一点。
0 0
- unity 物体间的碰撞检测
- unity游戏物体之间的碰撞检测
- UE4物体的碰撞检测
- Unity 碰撞检测,触发检测,方向键控制物体移动
- Unity解决物体移动速度过快而导致不能检测到碰撞的问题
- unity 检测 任意半径球体内的所有物体( 碰撞体)
- Unity3d中物体的的碰撞检测
- Unity 模拟爆炸后的物体碰撞
- Unity两个物体发生碰撞的条件
- 【Unity】3D碰撞物体的设置
- unity解决快速运动物体碰撞检测穿透问题
- 控制物体的移动与碰撞检测
- 平面物体碰撞检测
- Unity实现简单的碰撞检测
- Unity 3D 里的碰撞检测
- unity射线碰撞检测+LayerMask的使用
- unity不使用刚体的碰撞检测
- Unity实现简单的碰撞检测
- div悬浮居中
- xcode7中实现界面按钮直接调转+lable控件赋值
- 当file_get_contents或者simplexml_load_file的时候乱码
- Bezier样条
- Apache日志备分,分析后导入数据表
- unity 物体间的碰撞检测
- HTML+CSS学习笔记 (九)
- Android中的定时器Timer、AlarmManager、CountDownTimer的使用
- NYoj38布线问题
- 【算法导论-36】并查集(Disjoint Set)详解
- TCP的流量控制与拥塞控制
- 五个囚犯先后从100颗绿豆中抓绿豆。抓得最多和最少的人将被处死,不能交流,可以摸出剩下绿豆的数量,谁的存活几率最大?
- c++中字符串反转的3种方法
- 技术文章收藏