前言
本文所记内容有两点: 一、同类型物体的碰撞体不发生碰撞。 二、代码控制EventTrigger添加事件。
一、同类型物体的碰撞体不发生碰撞
场景描述:敌人和敌人之间碰撞体不发生碰撞,但敌人仍然需要碰撞体。
解决方法: ①通过给物体设定指定的Layer ②打开Edit–>ProjectSettings–>Phtsics2D(Physics,取决于你2D还是3D) ③在Layer Collision Matrix下取消勾选
二、代码控制EventTrigger添加事件
场景描述:最初,手动添加了EventTrigger,通过按下按钮抬起按钮来控制角色的移动。之后因为有多个角色预制体的问题下,需要通过代码实例化预制体后,代码添加EventTrigger事件来控制当前实例化的角色。
解决方法: ①需要给按钮加上EventTrigger组件 ②代码需要使用UnityEngine.EventSystems 并 获取EventTrigger组件 ③申明事件变量entry ④申明事件的类型PointerDown ⑤初始化事件enter的回调函数并给回调函数绑定监听事件 ⑥EventTrigger组件上添加enter事件。
代码如下:
void Start()
{
EventTrigger Uptrigger = Up.GetComponent<EventTrigger>();
EventTrigger.Entry Upentry1 = new EventTrigger.Entry();
EventTrigger.Entry Upentry2 = new EventTrigger.Entry();
Upentry1.eventID = EventTriggerType.PointerDown;
Upentry2.eventID = EventTriggerType.PointerUp;
Upentry1.callback = new EventTrigger.TriggerEvent();
Upentry1.callback.AddListener(ClickUpDownEvent);
Uptrigger.triggers.Add(Upentry1);
Upentry2.callback = new EventTrigger.TriggerEvent();
Upentry2.callback.AddListener(ClickUpUpEvent);
Uptrigger.triggers.Add(Upentry2);
}
void ClickUpDownEvent(BaseEventData pointData)
{
Debug.Log("按下");
}
void ClickUpUpEvent(BaseEventData pointData)
{
Debug.Log("抬起");
}
总结
本文记录笔记如上,文章仅为了方便笔者自身阅读翻阅,当然如果能帮到大家那就再好不过了。
|