Unity引擎2D游戏开发,水和荆棘的逻辑实现

新建瓦片

新建WaterSpike的Tilemap

image

对新建的两个Tilemap绑定Tilemap Collider 2D,这样他们就会有碰撞判定,勾选上Is Trigger

image

为了标识伤害的来源,将Water和Spike打上标签Tag

image

添加好荆棘的瓦片,不要忘记选中Spike的图层进行添加

image

添加好后,能够看到碰撞方格是分别框选的,每一块瓦片都是独立的

如果要形成一个整体的话,添加Composite Collider 2D

image

并在Tilemap Collider 2D中,勾选Use By Composite

image

接着,在Rigidbody 2D中,Body Type选中为Static

image

最后,在Composite Collider 2D中,勾选Is Trigger

image

伤害判定

由于血量等相关属性都是在PlayerCharacter代码中,所以在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#脚本

image

在Damage中填好伤害量,则可以实现

posted @   心霖の雨  阅读(67)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示