目录
第一次玩侠盗猎车手是在小学,从那以后就开启了我的五星好市民之路。
?下面是小编在小破站截的图,这是罪恶都市最开始的地方,大家一定很熟悉:
老市民们都知道走到粉红色圈里会触发剧情,它是控制游戏玩法和剧情走向的重要模块,这就是小编对触发器的理解。
?类似的功能在很多游戏中都有,触发器有看得见的(罪恶都市)也有看不见的(荒野大镖客2)
本篇带大家做一个简单的触发器小实例。
准备工作:
胶囊:?
public class PlayerControl : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
//水平轴
float horizontal = Input.GetAxis("Horizontal");
//垂直轴
float vertical = Input.GetAxis("Vertical");
//创建成一个方向向量
Vector3 dir = new Vector3(horizontal, 0, vertical);
//朝方向向量移动
transform.Translate(dir * 10 * Time.deltaTime);
}
}
做好准备工作后我们按实现效果摆放好运行,控制胶囊去撞,发现过不去:?
有碰撞组件当然过不去了,那我们把墙变成一个触发器来看看。
很简单,把墙Box Collider组件中的是触发器属性勾上就可以了 √,再看一下效果:
可以看到这次胶囊就穿过去了,碰撞更像一个实物实体可触摸,触发像是一个虚拟的东西但它又是真实存在的,这就是他们的区别。
我们先放效果图:我们控制玩家直行有墙过不去,走到特定位置触发机关墙消失,就可以通过了
注:这里的绿色边框是碰撞检测的边框同样也是触发器检测的边框
?触发器检测的三个方法,小编写上注释了
public class CubeControl : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
}
//进入触发: 角色进入触发器就会执行
private void OnTriggerEnter(Collider other)
{
//获取墙
GameObject wall = GameObject.Find("Wall");
//如果不为空说明获取到了
if (wall != null)
{
//获取到墙改为非激活状态(墙消失),这样我们控制的角色就可以走过去了
wall.SetActive(false);
}
}
//在触发中: 进入触发后会一直执行
private void OnTriggerStay(Collider other)
{
}
//触发结束: 完全离开触发区域执行
private void OnTriggerExit(Collider other)
{
}
}
?触发器小实例就做完了,点击运行就是效果图的场景了,拜拜┏(^0^)┛