在上一节我们介绍了刚体,但刚体只能使物体可以在力的作用下运动,小球之所以能撞到地面而不是穿过地面,是因为在创建物体时,U3D自动为每个物体附加了碰撞器,有了碰撞器,才会使物体正常的碰撞,而不是穿过。
接着上节的项目,选中Shere,点掉物体的材质渲染Mesh Renderer选项,在Scene视图里的绿线就是碰撞器
在碰撞器的属性中我们可以看到,U3D允许我们手动调节碰撞器的位置和大小(这里告诉大家一个小技巧,鼠标放在X,Y,Z,Radius,当鼠标变成两个左右对立的小箭头时,上下移动鼠标可以调节编辑框里的数值)
网状碰撞器。选中小球,在菜单栏选择Component——>Physics——>Mesh Collider在弹出是否替换碰撞器的对话框中选择替换,这样我们就为物体添加了网格碰撞器,在Scene视图,我们可以看到,网格碰撞器是按照物体的形状精密的排布,这样,不论物体是什么形状,我们都可以为它添加碰撞器了,但值得注意的是:两个网格碰撞器是不发生碰撞的
触发器:
触发器是可以被穿越的,不然我们怎么进入这边区域呢,对吧
和碰撞器一样,触发器也有相应的行为函数:
OnTriggerEnter:当物体进入触发器的一瞬间触发
OnTriggerStay:当物体进入触发器后离开触发器前触发
OnTriggerExit:当物体离开触发器的一瞬间触发
为了让大家理解触发器,我们接着上节的项目,做一个小测试
选中Cube,将它作为触发器,将下面的脚本拖到Cube上
using UnityEngine;
using System.Collections;
public class TriggerTest : MonoBehaviour {
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
}
void OnTriggerEnter(Collider other)
{
print(other.gameObject.name + "Enter");
}
void OnTriggerStay(Collider other)
{
print(other.gameObject.name + "Stay");
}
void OnTriggerExit(Collider other)
{
print(other.gameObject.name + "Exit");
}
}
运行结果:
在上一节我们介绍了刚体,但刚体只能使物体可以在力的作用下运动,小球之所以能撞到地面而不是穿过地面,是因为在创建物体时,U3D自动为每个物体附加了碰撞器,有了碰撞器,才会使物体正常的碰撞,而不是穿过。
接着上节的项目,选中Shere,点掉物体的材质渲染Mesh Renderer选项,在Scene视图里的绿线就是碰撞器
在碰撞器的属性中我们可以看到,U3D允许我们手动调节碰撞器的位置和大小(这里告诉大家一个小技巧,鼠标放在X,Y,Z,Radius,当鼠标变成两个左右对立的小箭头时,上下移动鼠标可以调节编辑框里的数值)
网状碰撞器。选中小球,在菜单栏选择Component——>Physics——>Mesh Collider在弹出是否替换碰撞器的对话框中选择替换,这样我们就为物体添加了网格碰撞器,在Scene视图,我们可以看到,网格碰撞器是按照物体的形状精密的排布,这样,不论物体是什么形状,我们都可以为它添加碰撞器了,但值得注意的是:两个网格碰撞器是不发生碰撞的
触发器:
触发器是可以被穿越的,不然我们怎么进入这边区域呢,对吧
和碰撞器一样,触发器也有相应的行为函数:
OnTriggerEnter:当物体进入触发器的一瞬间触发
OnTriggerStay:当物体进入触发器后离开触发器前触发
OnTriggerExit:当物体离开触发器的一瞬间触发
为了让大家理解触发器,我们接着上节的项目,做一个小测试
选中Cube,将它作为触发器,将下面的脚本拖到Cube上
using UnityEngine;
using System.Collections;
public class TriggerTest : MonoBehaviour {
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
}
void OnTriggerEnter(Collider other)
{
print(other.gameObject.name + "Enter");
}
void OnTriggerStay(Collider other)
{
print(other.gameObject.name + "Stay");
}
void OnTriggerExit(Collider other)
{
print(other.gameObject.name + "Exit");
}
}
运行结果: