unity学习笔记----游戏练习07

news2024/11/17 9:53:17

一、僵尸攻击和植物的掉血和销毁

当僵尸接触到植物开始攻击时会持续削减植物的血量,当植物血量为零时就销毁当前植物。

在plantManager中,

为植物添加一个血量HP = 100,

public int HP = 100;

在写一个减少血量的方法,来减少血量。

    public void LostHP(int attack)
    {
        HP -= attack;
        if(HP< 0)
        {
            Destroy(gameObject);
        }
    }

Zombie中需要用到攻击力,时间间隔,计时器

    //攻击力
    public int AttackNumber = 30;
    //时间间隔
    private float AktDuration ;
    //计时器
    public float AktTimer = 2;

TakeDamage方法需要在zombie脚本中调用,当僵尸开始攻击时,调用当前被攻击对象身上的TakeDamage方法。

  void EatUpdate()
    {
        AktTimer += Time.deltaTime;
        if (AktTimer > AktDuration&&CurrentEatPlant !=null)
        {
            CurrentEatPlant.LostHP(AttackNumber);
            AktTimer = 0;
        }
    }

因此需要保存当前的植物

private PlantManagr CurrentEatPlant;

在执行攻击动画时,保存当前的物体

CurrentEatPlant = collision.GetComponent<PlantManagr>();
为了防止攻击间隔出现问题,在每次切换到Eat状态时需要将计时器重置为0.

    public void TransitionEat()
    {
        zombieState = ZombieState.Eat;
        AktTimer = 0;
    }

演示效果如下:

二、豌豆和僵尸的触发检测

1.僵尸的受伤处理

要为僵尸定义当前血量和最大血量,

    //血量
    public int HP = 100;
    public int currentHP;

在start中让其一开始时相等

currentHP = HP;

还需要一个减少血量的方法,在这个方法里面需要设置一个血量的百分比,是为了当血量低于一定值时,执行特定的动画。当血量小于零时调用dead方法,将僵尸的状态设置为Die

    public void TakeDamage(int damage)
    {
        if (currentHP <= 0) 
            return;
        this.currentHP -= damage;
        if (currentHP <= 0)
        {
            currentHP = -1;
            Died();
        }
        float HpPercent = currentHP * 1f / HP;
        animator.SetFloat("HPPercent", HpPercent);

    }

当僵尸死亡后将Collider2D禁用掉,避免再次发生碰撞检测,并且在两秒后销毁自身。

    private void Died()
    {
        zombieState = ZombieState.Die;
        GetComponent<Collider2D>().enabled = false;
        Destroy(gameObject, 2);
    }

为了方便后续的检测给僵尸添加一个 Zombie标签,

2.然后为豌豆添加一个圆形碰撞器组件 Circle Collider 2D ,在BulletControl中去做检测。

当其于僵尸发生碰撞要销毁自身,然后让僵尸血量减少。

为了方便子弹的攻击值能通过外界设置,还要为子弹添加一个设置攻击值的方法。

public void SetAKTnumber(int AKTnumber)
    {
        this.AKTnumber = AKTnumber;
    }

当子弹与敌人发生碰撞时,要得到敌人身上的脚本,调用这个脚本里面减少血量的方法,然后把伤害值传递过去。

 private void OnTriggerEnter2D(Collider2D collision)
    {
        if(collision.tag == "Zmobie")
        {
            Destroy(gameObject);
            collision.GetComponent<ZombieControl>().TakeDamage(AKTnumber);
        }
    }

为了避免子弹一值存在,当子弹没有碰撞到物体10s后销毁自身

   void Start()
    {
        Destroy(gameObject, 10);
    }

3.在豌豆射手攻击时去设置他的攻击值

go.SetAKTnumber(AKTvalue);

演示效果如下:僵尸会先失去头然后再死去最后消失。

三、豌豆的爆裂效果

当豌豆接触到僵尸时对其添加一个爆炸的特效

需要达到的效果是由下到大的方式播放,有因此为其添加一个动画,

打开动画编辑器后,点击录制,在不同的关键去修改豌豆的缩放,达到先变大后减小最后消失的效果

在代码中,当子弹接触到僵尸时就播放这个动画,因为这个动画是这个物体的默认动画,将其设置为预制体然后实例化出来就行了。

public GameObject PeaBulletHitPrefab;

GameObject go= GameObject.Instantiate(PeaBulletHitPrefab, transform.position, Quaternion.identity);
Destroy(go, 1);

效果如下:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1411039.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

安全防御第三次作业

作业&#xff1a;拓扑图及要求如下图 注&#xff1a;server1是ftp服务器&#xff0c;server2是http服务器 lsw1&#xff1a; 其中g0/0/0口为trunk 实现 1&#xff0c;生产区在工作时间内可以访问服务器区&#xff0c;仅可以访问http服务器 验证&#xff1a; 2&#xff0c;办公…

代码随想录算法训练营第二十七天|455.分发饼干 , 376. 摆动序列 , 53. 最大子序和

455.分发饼干 代码随想录 class Solution {public int findContentChildren(int[] g, int[] s) {int ans 0;Arrays.sort(g);Arrays.sort(s);int start s.length - 1;for (int i g.length - 1; i >0; i--) {if (start > 0 && s[start] > g[i]) {ans;start…

精要图示:园区金融数字化服务蓝图,以园区为支点推动信贷业务增长

作为企业集聚地&#xff0c;园区已然成为银行业夯实客群基础的重要切口&#xff0c;各大行陆续围绕园区场景创新金融产品&#xff0c;以期抢跑园区金融新赛道、把握新增量。 启信慧眼首推一站式【园区金融】数字化服务方案&#xff0c;该方案同时支持启信天元私有化部署&#x…

idea 打包跳过测试

IDEA操作 点击蓝色的小球 手动命令 mvn clean package -Dmaven.test.skiptrue

水波浪标题

上图效果要先复制第13次修改的备忘录&#xff0c;再另外保存下面的代码&#xff1a; <!DOCTYPE html> <html lang"zh"> <a class"a-href a-h">水波浪标题</a> <style>.h1-div {/* 隐藏 */display: none;}h1 {display: inli…

【干货】【常用电子元器件介绍】【电阻】(二)--敏感电阻器

声明&#xff1a;本人水平有限&#xff0c;博客可能存在部分错误的地方&#xff0c;请广大读者谅解并向本人反馈错误。   电子电路中除了采用普通电阻器外&#xff0c;还有一些敏感电阻器&#xff08;如热敏电阻器、压敏电阻器、光敏电阻器等&#xff09;也被广泛地应用。然而…

直播核心岗位基础内容

一.直播间核心岗位 1.直播间前端岗位 前端岗位分工 &#xff08;1&#xff09;主播岗位职责 &#xff08;2&#xff09;场控岗位职责 &#xff08;3&#xff09;助理岗位职责 中端岗位分工 &#xff08;1&#xff09;运营岗位职责 &#xff08;2&#xff09;中控岗位职责 …

C# 使用AutoMapper实现类映射

写在前面 AutoMapper是一个用于.NET中简化类之间的映射的扩展库&#xff1b;可以在执行对象映射的过程&#xff0c;省去的繁琐转换代码&#xff0c;实现了对DTO的快速装配&#xff0c;有效的减少了代码量。 通过NuGet安装&#xff0c;AutoMapper&#xff0c; 由于本例用到了D…

【Unity】粒子贴图异常白边问题

从PS制作的黑底&#xff0c;白光的贴图。放入Unity粒子中&#xff0c;拉远看会有很严重的白边&#xff0c;像马赛克一样。 材质使用&#xff1a;Mobile/Particles/Additive 经测试只使用一张黑色的图片&#xff0c;也会有白边。 解决方案&#xff1a; 关闭黑色底&#xf…

RX4901CE (RTC模块)

RX4901CE是一个集成了32.768 kHz数字温度补偿晶体振荡器(DTCXO)的RTC模块。高稳定性&#xff0c;低电流消耗&#xff0c;时间戳功能&#xff0c;当外部或内部事件发生时&#xff0c;可以记录多达32个日期和时间&#xff0c;以及基本的RTC功能&#xff0c;如时间和日历&#xff…

什么是servlet

什么是servlet 什么是servlet Servlet&#xff08;Server Applet&#xff09;是 Java Servlet 的简称&#xff0c;称为小服务程序或服务连接器&#xff0c;用 Java 编写的服务器端程序&#xff0c;具有独立于平台和协议的特性&#xff0c;主要功能在于交互式地浏览和生成数据…

对话泛能网程路:能源产业互联网,行至中程

泛能网的能源产业互联网的标杆价值还不仅于此。其在产业互联之外&#xff0c;也更大的特殊性在于其也更在成为整个碳市场的“辅助运营商”&#xff0c;包括电力、碳等一系列被泛能网帮助企业改造和沉淀的要素资产&#xff0c;都在构成着碳交易市场的未来底层。 这恰是产业互联…

图像处理------调整色调

什么是色调&#xff1f; 色调&#xff0c;在画面上表现思想、感情所使用的色彩和色彩的浓淡。分为暖色调和冷色调。 from cv2 import destroyAllWindows, imread, imshow, waitKey#创建棕褐色色调 def make_sepia(img, factor: int):pixel_h, pixel_v img.shape[0], img.shap…

Vector OJ:电话号码组合 数组中超过一半的数字

目录 1.电话号码组合 2. JZ39 数组中出现次数超过一半的数字 3.删除有序数组中的重复项 1.电话号码组合 给定一个仅包含数字 2-9 的字符串&#xff0c;返回所有它能表示的字母组合。答案可以按 任意顺序 返回。 给出数字到字母的映射如下&#xff08;与电话按键相同&#xf…

TensorFlow 深度学习 开发环境搭建 全教程

PyTorch 深度学习 开发环境搭建 全教程 TensorFlow 深度学习 开发环境搭建 全教程 1、指定清华源命令 -i https://pypi.tuna.tsinghua.edu.cn/simple2、conda安装 这是AI开发环境的全家桶&#xff0c;官网下载链接Anaconda | Start Coding Immediately 尽量不要选择太新版本…

勤哲 Excel 服务器2017 V13.0.144 最好用稳定版本,带注册,无限用户,含教程【亲测非常好用】

勤哲EXCEL 服务器 V13.0.144 无限用户 无限数据 非常好用 非常稳定。 Excel服务器是一个面向最终用户的信息系统设计工具与运行平台&#xff0c;它的作用是帮助我们“建立适合需要的管理信息系统&#xff0c;实现管理的信息化”。 谈到管理信息系统&#xff0c;人们很容易联想…

Java笔记(死锁、线程通信、单例模式)

一、死锁 1.概述 死锁 : 死锁是指两个或两个以上的进程在执行过程中&#xff0c;由于竞争资源或者由于彼此通信而造成的一种阻塞的现象&#xff0c;若无外力作用&#xff0c;它们都将无法往下执行。此时称系统处于死锁状态或系统产生了死锁&#xff0c;这些永远在互相等待的进…

前端面试题-js-new关键字-this指向-js事件流-防抖节流

前端面试题-js-new关键字-this指向-js事件流-防抖节流 new 关键字都做了什么 this指向问题JS事件流防抖节流函数 new 关键字都做了什么 this指向问题 1.创建一个简单的空对象 2.原型的绑定&#xff0c;确定对象O的原型链 3.绑定this对象为O&#xff0c;传入参数&#xff1b;执…

深入理解旅游网站开发:Java+SpringBoot+Vue+MySQL的实战经验

✍✍计算机编程指导师 ⭐⭐个人介绍&#xff1a;自己非常喜欢研究技术问题&#xff01;专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目&#xff1a;有源码或者技术上的问题欢迎在评论区一起讨论交流&#xff01; ⚡⚡ Java实战 |…

RocketMQ源码阅读-九-自定义过滤规则Flitersrv

RocketMQ源码阅读-九-自定义过滤规则Flitersrv 什么是FiltersrvFiltersrv注册到Broker过滤类Consumer发起订阅设置过滤类代码Consumer上传过滤类代码Flitersrv编译过滤类代码 过滤消息Consumer 从 Filtersrv 拉取消息Flitersrv从Broker拉取消息 Flitersrv的高可用总结 什么是Fi…