相关文章推荐
买醉的铁链  ·  Error creating bean ...·  1 年前    · 
豪气的大葱  ·  node.js - webview: ...·  1 年前    · 

1.两个物体发生碰撞的条件:(1)两个物体同时有碰撞器;    (2)发起方有刚体(Rigidbody)。

做游戏时记住都加刚体Rigidbody就行了。万无一失。

2.勾选 Is Trigger,变成触发器

两个物体Box Collider里都勾选Is Trigger,所有碰撞效果失效,两个物体接触时触发所写的命令。

代码举例:

using UnityEngine;
using System.Collections;


public class Pengz : MonoBehaviour {


// Use this for initialization
void Start () {

}

// Update is called once per frame
void Update () {

}


private void OnTriggerEnter (Collider other) //OnTriggerStar   刚开始接触就运行下面的命令
{
print("你碰着我了");
}
private void OnTriggerStay (Collider other) //OnTriggerStay   持续接触就持续执行下面命令
{
print("你怎么还在碰我啊");
}
private void OnTriggerExit (Collider other) //OnTriggerExit   结束接触就执行下面命令
{
print("你终于不碰我了");
}
}

3.也可以使用 OnCollisionEnter方法,做触发器!

这个命令是在发生碰撞效果的时候,执行触发器,触发所写的命令,此时不用在Box  Collider里勾选Is Trigger。

private void OnCollisionEnter(Collision collision)
{
print("1");
}
private void OnCollisionStay(Collision collision)
{
print("1");
}
private void OnCollisionExit(Collision collision)
{
print("1");
}

3.总结,OnTriggerEnter的使用条件

2个物体都有碰撞器,最少有一个勾选Is Trigger,其中有且只有一个物体添加了刚体组件

1. 碰撞 阶段的三个方法都有一个参数 --- Collision other --- 这个参数的类型是 碰撞 类 --- 当挂载该脚本的游戏物体a与其它具有 碰撞 组件的游戏物体b发生 碰撞 时, 游戏物体b的 碰撞 组件对象就会被传给三个方法中的引用参数 Collision other.注意 碰撞 三阶段与触发三阶段之间的 --- a.方法区别 b.方法的参数的类型区别(一个是Collision类名词 碰撞 ,类中有一个Collider类型的引用;另一个是Collider类 名词 碰撞 ,它就是 碰撞 类型) Unity 碰撞 触发表 (IE查看 Unity 碰撞 触发表 (IE查看) Unity 碰撞 触发表 (IE查看) Unity 碰撞 触发表 (IE查看) Unity 碰撞 触发表 (IE查看) Unity 碰撞 触发表 (IE查看) Unity 碰撞 触发表 (IE查看) Unity 碰撞 触发表 (IE查看) Unity 碰撞 触发表 (IE查看) Unity 碰撞 触发表 (IE查看) Unity 碰撞 触发表 (IE查看) Unity 碰撞 触发表 (IE查看) Unity 碰撞 触发表 (IE查看) Unity 碰撞 触发表 (IE查看) Unity 碰撞 触发表 (IE查看) Unity 碰撞 触发表 (IE查看) Unity 碰撞 触发表 (IE查看) Unity 碰撞 触发表 (IE查看) Unity 碰撞 触发表 (IE查看) Unity 碰撞 触发表 (IE查看) Unity 碰撞 触发表 (IE查看) Unity 碰撞 触发表 (IE查看) Unity 碰撞 触发表 (IE查看) Unity 碰撞 触发表 (IE查看) Unity 碰撞 触发表 (IE查看) Unity 碰撞 触发表 (IE查看) Unity 碰撞 触发表 (IE查看) Unity 碰撞 触发表 (IE查看)) Unity 碰撞 触发表 (IE查看 Unity 碰撞 触 ProjectSettings中的物理系统 碰撞 必须要有交集。 两者有交集,才可使用 触发器 检测到对方。 Unity 中一般都是默认全部都有交集,若是在项目过程中改变了,那么后续使用时一定要注意这个地方! 这个问题对于刚接触 unity 的新手来说真是头秃,还好有csdn的老铁们的帮助,这里我再用自己的语言归纳一些。 在 unity 中物体之间有“接触”和“ 碰撞 ”两种状态,产生这两种状态的两个物体都 需要 具有Box Collider 2D组件( 碰撞 体)。“接触”状态,不 需要 力,如碰到金币捡金币不 需要 力; 碰撞 ”, 需要 力的作用,如子弹打到木块,子弹会弹回,木块会被撞远。 Box Collider 2D有一个bool参数:Is Trigger ,如果选中了(两个物体至少有一个的Box Collider 2D的Is Trigger 选 要产生 碰撞 必须为游戏对象添加刚体(Rigidbody)和 碰撞 ,刚体可以让物体在物理影响下运动。 碰撞 体是物理组件的一类,它要与刚体一起添加到游戏对象上才能触发 碰撞 。如果两个刚体相互撞在一起,除非两个对象有 碰撞 体时物理引擎才会计算 碰撞 ,在物理模拟中,没有 碰撞 体的刚体会彼此相互穿过。 物体发生 碰撞 的必要条件: 两个物体都必须带有 碰撞 (Collider),其中一个物体还必须带有Rigidbody刚体。 在 unity 3d中,能检测 碰撞 发生的方式有两种,一种是利用 碰撞 ,另一种则是利用 触发器 碰撞 :包含了很多种 当我们想要检测到物体之间的接触,又不想让 碰撞 检测影响物体的移动,这时候就可以用到 触发器 。文章 简单 介绍了什么是 触发器 触发器 碰撞 体的关系、触发检测和 碰撞 检测等。 首先敌人这个对象要添加 碰撞 组件(Box Collider) 和刚体组件(Rigidbody)、然后将Use Gravity 这个选项取消,就是取消重力。其次将 碰撞 组件下的Is Trigger 选项勾上,就是变成 触发器 。 注意:要想 触发器 效果出来,两物体之间必须有一个有刚体组件,不然不会出效果! 触发器 的用法: //触发接触的那一帧调用一次 void On Trigger Enter(Collider other){} void On Trigger Stay(Collider other){} void On Trigger Exit... 在游戏制作过程中,游戏对象要根据游戏的 需要 进行物理属性的交互。因此, Unity 3D 的物理组件为游戏开发者提供了 碰撞 体组件。 碰撞 体是物理组件的一类,它与刚体一起促使 碰撞 发生。 碰撞 体是 简单 形状,如方块、球形或者胶囊形,在 Unity 3D 中每当一个 被创建时,它会自动分配一个合适的 碰撞 。一个立方体会得到一个 (立方体 碰撞 体),一个球体会得到一个 (球体 碰撞 体),一个胶囊体会得到一个 (胶囊体 碰撞 体)等。添加 碰撞 体在 Unity 3D 的物理组件使用过程中, 碰撞 需要 与刚体一起添加到游戏对象上才能触发碰 从上往下分别是: 碰撞 编译 ,是 触发器 ,材质, 碰撞 中心(这个中心是可以被我们调整坐标移动的,如果不调整的话默认为游戏物体的中心坐标), 碰撞 半径,(胶囊 碰撞 特有的胶囊高度和胶囊指向)函数里面的参数不 需要 我们去写,编译 会帮我们写的,这个参数承接的是当前脚本挂载的游戏物体a 碰撞 到的套在游戏物体b的 碰撞 体对象的信息对象,这个信息对象中存的是对应 碰撞 体对象的一系列信息。2.触发和 碰撞 检测不同的是,我们 需要 将两个发生 碰撞 的物体的其中一个的 碰撞 组件的中的collider组件中的设为 触发器 选项打开。 要产生 碰撞 必须为游戏对象添加刚体(Rigidbody)和 碰撞 ,刚体可以让物体在物理影响下运动。 碰撞 体是物理组件的一类,它要与刚体一起添加到游戏对象上才能触发 碰撞 。如果两个刚体相互撞在一起,除非两个对象有 碰撞 体时物理引擎才会计算 碰撞 ,在物理模拟中,没有 碰撞 体的刚体会彼此相互穿过。 物体发生 碰撞 的必要条件 两个物体都必须带有 碰撞 (Collider),其中一个物体还必须带有Rigidbod...