首页 > 其他分享 >Unity引擎2D游戏开发,水和荆棘的逻辑实现

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

时间:2024-02-20 12:23:02浏览次数:34  
标签:Water Collider 荆棘 Tilemap OnTriggerStay2D 2D Unity Spike

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中填好伤害量,则可以实现

标签:Water,Collider,荆棘,Tilemap,OnTriggerStay2D,2D,Unity,Spike
From: https://www.cnblogs.com/xinlindeyu/p/18022827

相关文章

  • Unity简易事件系统
    事件系统是一个基于观察者模式之上构建的系统。通过利用delegate来进行Multicasting,实现一处激发则一触全发。​ 以下代码以简单的形式实现了一个仅限void类型函数的事件系统。publicclassEventManager:MonoSingleton<EventManager>{privatestaticDictionary<strin......
  • Unity常用设计模式之工厂模式
    工厂模式是一种常用的设计模式,它属于创建型模式,用于创建对象的过程中。在Unity中,工厂模式可以帮助我们更好地管理和创建对象,提高代码的可维护性和可扩展性。接下来,我将详细介绍Unity中常用的工厂模式。一、工厂模式概述工厂模式是一种创建型设计模式,它提供了一个统一的接口来创......
  • Unity UGUI的DrawCall优化
    UnityUGUI是一种强大的用户界面设计工具,它可以帮助开发者快速创建各种界面元素,从按钮和文本到滑块和面板等。然而,在使用UGUI时,一个常见的性能瓶颈就是DrawCall过多导致的性能下降。在本文中,我们将深入探讨UGUI的DrawCall优化方法,并给出对应的代码实现。什么是DrawCall?在Unity......
  • Unity红点系统的架构与设计
    在游戏开发中,红点系统是一种常见的功能,用于提示玩家有未读消息或待处理任务。在Unity引擎中,我们可以使用脚本来实现红点系统,下面我将介绍一种基于Unity的红点系统的架构与设计,并给出对应的代码实现。红点系统的代码实现首先,我们需要创建一个红点管理器的脚本RedDotManager.cs,......
  • Unity常用设计模式之代理模式
    代理模式是一种常用的设计模式,它允许一个对象代表另一个对象进行访问。在Unity中,代理模式经常被用来控制对某些对象的访问,以便在访问对象的同时进行一些额外的操作,比如权限控制、缓存、日志记录等。代理模式的结构包括三个角色:抽象主题(Subject)、真实主题(RealSubject)和代理(Proxy)。......
  • Unity 2022.3.20f1新功能,异步实例化预制体Object.InstantiateAsync
    今天查看Unity2022.3.20f1更新日志,发现新增了个异步实例化的功能,这个功能解决了Unity历史上实例化预制体卡顿的痛点,简直不要太爽。具体的API文档请点击跳转。做了个简单的实例化测试,实例化500*500个Cube,耗时9.2s。实例化过程之间不会卡顿,可以做其他事情,即便是在重度游戏加载场......
  • Unity框架设计系列:Unity 如何设计网络框架
    在Unity框架设计中与游戏服务器对接的网络框架也是非常重要的一个模块,本文給大家分享如何来基于Unity来设计一个网络框架,主要的讲解以下几个点:(1)TCP半包粘包,长连接与短连接,IO阻塞;(2)TcpSocket与UDPSocket的技术方案;(3)Unity的序列化与反序列化技术方案;(4)TCP的......
  • Unity资源管理系列:Unity项目开发中如何做资源加密
    Unity的游戏很容易被人反编译出来,然后再重新打包发布,把自己辛辛苦苦开发的游戏,抄写的一丝不挂。很多项目要求要做好资源加密,Unity中如何做好资源加密呢?本文給大家分享加密算法+资源打包整合思路:(1)游戏资源加密如何选择加密算法;(2)Assetsbundle资源包的加密与解密;游戏资源......
  • Unity Audio System概要
    Unity的AudioSystem给我们提供了一整套的游戏音频处理解决方案,接下来我们对UnityAudioSystem进行简单的讲解。首先让我们来了解一下UnityAudioSystem包含了哪些重要的组成部分。AudioClip:这个是Unity存放外部音频资源的容器,可以根据我们的需要将外部导入的音频资源进行粗处......
  • 【Unity】消息系统
    介绍封装的消息机制使用注册消息Reg(MessageTypemessageType,MessageDelHandlehandle);messageType :注册消息类型handle :消息传入时回调方法(该方法需拥有参数Message)注销消息UnReg(MessageTypemessageType,MessageDelHandlehandle);messageType :注销消息类型......