Unity引擎2D游戏开发,水和荆棘的逻辑实现
新建瓦片
新建Water
与Spike
的Tilemap
对新建的两个Tilemap绑定Tilemap Collider 2D
,这样他们就会有碰撞判定,勾选上Is Trigger
为了标识伤害的来源,将Water和Spike打上标签Tag
添加好荆棘的瓦片,不要忘记选中Spike
的图层进行添加
添加好后,能够看到碰撞方格是分别框选的,每一块瓦片都是独立的
如果要形成一个整体的话,添加Composite Collider 2D
并在Tilemap Collider 2D
中,勾选Use By Composite
接着,在Rigidbody 2D
中,Body Type
选中为Static
最后,在Composite Collider 2D中,勾选Is Trigger
伤害判定
由于血量等相关属性都是在
Player
的Character
代码中,所以在Character内写相关方法
创建OnTriggerStay2D
方法
private void OnTriggerStay2D(Collider2D collision)
{
}
OnTriggerStay2D方法:https://docs.unity3d.com/cn/2022.3/ScriptReference/Collider2D.OnTriggerStay2D.html
首先要对碰撞体进行区分,区分的手段就是通过Tag
来执行
调用CompareTag方法对是否为Water的标签进行判断,如果是的话,就进行进一步的操作
if (collision.CompareTag("Water"))
{
}
如果要处理为死亡,则当前血量归0,并进行血量扣除和死亡的处理
if (collision.CompareTag("Water"))
{
// 死亡或者血量更新
// 进行血条的扣除
currentHealth = 0;
OnHealthChange?.Invoke(this);
onDie?.Invoke();
}
碰撞荆棘产生伤害,则Spike需要绑定Attack C#脚本
在Damage中填好伤害量,则可以实现
标签:Water,Collider,荆棘,Tilemap,OnTriggerStay2D,2D,Unity,Spike From: https://www.cnblogs.com/xinlindeyu/p/18022827