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

这篇具有很好参考价值的文章主要介绍了unity学习笔记----游戏练习06。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、豌豆射手的子弹控制

创建脚本单独控制子弹的运动

用transform来控制移动

    void Update()
    {
        transform.Translate(Vector3.right * speed * Time.deltaTime);
    }

创建一个控制子弹速度的方法,方便速度的控制

private void SetSpeed(float speet)
    {
        this.speed = speet;
    }

回到控制豌豆射手的脚本中,当调用他的射击方法时去实例化子弹这样就能实现豌豆射手的攻击了。

    private void shoot()
    {
        BulletControl go = GameObject.Instantiate(PeaBulletPrefab, shootPointTransform.position, Quaternion.identity);
        go.SetSpeed(BulletSpeet);
    }

效果如下:

unity学习笔记----游戏练习06,unity,学习,笔记

二、僵尸动画的开发

普通的僵尸有五个动画状态Eat 、Move、LostHeadMove、LostHandMove,Die他们之间的相互转换关系如下:

unity学习笔记----游戏练习06,unity,学习,笔记

在制作动画时,帧动画可以直接拖拽到游戏物体上,相当于给游戏物体上的动画状态机添加新的动画。

添加动画后,效果如下:

unity学习笔记----游戏练习06,unity,学习,笔记

在Zombie_Move和Zombie_Eat通过一个布尔变量来控,当控制到敌人时就开Eat,没有碰到植物就Move。

unity学习笔记----游戏练习06,unity,学习,笔记

当IsAttacking为true时,就会播放Eat动画,然后将退出时间取消表示随时都可以切换。

Move动画和LostHeadMove的切换时当血量达到某个值的时候进行切换,添加一个float类型的参数,

unity学习笔记----游戏练习06,unity,学习,笔记

Eat动画和LostHeadEat的切换条件也是一样的

unity学习笔记----游戏练习06,unity,学习,笔记

其他动画状态的切换也是类似设置。

设置好了之后,当参数达到对应的值之后就会进行不同状态的切换。

测试效果如下:

unity学习笔记----游戏练习06,unity,学习,笔记

三、僵尸功能开发

1.行走功能

僵尸需要和植物之间进行检测,因此要在僵尸上添加刚体组件,既然僵尸身上有刚体组件,那么就可以使用刚体组件来控制他的移动。

因此就要为其添加刚体和碰撞器

Rigldbody 2D 、Box Collider 2D。

在僵尸的脚本上拿到刚体的引用

private Rigidbody2D rgd;

在start函数中获取这个刚体组件

rgd = GetComponent<Rigidbody2D>();

然后通过MovePosition方法来进行移动

rgd.MovePosition(rgd.position + Vector2.left * moveSpeed * Time.deltaTime);

当前的位置加上移动的方向乘以移动的速度和时间

2.攻击功能

这个攻击功能通过触发检测来进行控制,将僵尸物体的Collider组件设置为触发器,

然后再为每个植物添加一个触发器。这样僵尸和植物之间就能进行触发检测了。

这里会出现一个问题:植物无法被正常种植在地面上。

这是由于地面上也有触发器,植物上的刚体会将地面上的覆盖掉。

解决办法是:在植物处于禁用状态时将Box Collider 2D组件禁用掉,只有当植物处于启用状态时,再将Box Collider 2D组件启用。

要确保僵尸植物进行触发检测,为所有植物添加一个标签plant。

在脚本中调用出发检测的方法,当与其碰撞的物体的标签为plant时,就会执行Eat动画

要执行Eat动画,就要获取animation组件,

private Animator animator;

animator = GetComponent<Animator>();

然后通过OnTriggerEnter2D方法设置Isattacking参数为true,通过OnTriggerExit2D方法设置Isattacking参数为false。

    private void OnTriggerEnter2D(Collider2D collision)
    {
        if (collision.tag == "plant")
        {
            animator.SetBool("IsAttacking", true);
        }
    }
    private void OnTriggerExit2D(Collider2D collision)
    {
        if(collision.tag == "plant")
        {
            animator.SetBool("IsAttacking", false);
        }
    }

当触发器与植物碰撞时开启攻击动画,当触发器与植物分离时停止攻击动画的功能。

效果如下:

unity学习笔记----游戏练习06,unity,学习,笔记

此时会发现僵尸是在一边移动一边吃植物,因此还要为僵尸设置三个状态,在对应的状态播放对应的动画

enum ZombieState
{
    Move,
    Eat,
    Die
}

ZombieState zombieState = ZombieState.Move;//设置默认状态

通过switch方法来对不同的状态进行判断,进而执行对应的方法。

  void Update()
    {
        switch (zombieState)
        {
            case ZombieState.Move:
                MoveUpdate();
                break;
            case ZombieState.Eat:
                break;
            case ZombieState.Die:
                break;
            default:
                break;
        }
        
    }

最后效果如下:

unity学习笔记----游戏练习06,unity,学习,笔记

当接触到植物时只会进行eat动画,当植物被移除时只会进行move动画。文章来源地址https://www.toymoban.com/news/detail-823162.html

到了这里,关于unity学习笔记----游戏练习06的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Unity学习笔记--如何优雅简便地利用对象池生成游戏对象(进阶版)LRU + 对象池

    之前写过一篇关于对象池的文章,现在来看写的并不是很好,所以来考虑优化下。 现在来看一年前写的代码,越看越不能入目hhh Unity学习笔记–如何优雅简便地利用对象池生成游戏对象 Unity学习笔记–使用 C# 开发一个 LRU PoolManager.cs BaseFactory.cs 创建 Factory 创建 object 创建 Bu

    2024年02月13日
    浏览(29)
  • 【Unity学习笔记】b站Unity架构课Unity3D 商业化的网络游戏架构(高级/主程级别)

    自己跟着学完了,写了不少代码,会放在CSDN代码库,因为老师并没有提供源码,录屏也不是完全连续,所以难免 有代码缺少、无法运行 的情况,但是确实学到了不少真本事,主要是了解老师的架构思想。 b站课程地址 课程我自己是跟着学完了的,本文是个人笔记记录和好课

    2024年02月02日
    浏览(39)
  • 用Unity3D制作FPS游戏的学习笔记————人物移动、利用鼠标实现视角转动和人物跳跃(含人物悬空不掉落修复)

    前言: 这是我第一次发布文章,此文章仅供参考,我也是刚学习接触untiy,在制作项目的过程中将有用的写下来记一记,以便自己之后能回头看看,各位大佬轻点喷,若有错误请麻烦积极提谢谢各位。该文章参考自B站UP主蔡先森_rm-rf发布的 【第一人称射击游戏教程2.0【已完结

    2024年04月27日
    浏览(36)
  • 「 CISSP学习笔记 」06. 安全开发

    该知识领域涉及如下考点,具体内容分布于如下各个子章节: 理解安全并将其融入软件开发生命周期 (SDLC) 中 在软件开发环境中识别和应用安全控制 评估软件安全的有效性 评估获得软件对安全的影响 定义并应用安全编码准则和标准 6.1.1. 软件开发 系统开发的每个阶段都应当

    2024年01月19日
    浏览(20)
  • MySql学习笔记06——约束介绍

    约束对应的英语单词:constraint 在创建表的时候,我们可以给表中的字段加上一些约束,来保证这个表中数据的完整性、有效性!!!约束的作用就是为了保证:表中的数据有效!! 非空约束 not null 唯一性约束 unique 主键约束 primary key 外键约束 foreign key 检查约束 check (mys

    2024年02月09日
    浏览(24)
  • WPF实战学习笔记06-设置待办事项界面

    创建待办待办事项集合并初始化 TodoViewModel: 创建绑定右侧命令、变量 设置界面

    2024年02月15日
    浏览(28)
  • web安全学习笔记【06】——http\https抓包

    思维导图放最后 #知识点: 1、Web常规-系统中间件数据库源码等 2、Web其他-前后端软件Docker分配站等 3、Web拓展-CDNWAFOSS反向负载均衡等 ----------------------------------- 1、APP架构-封装原生态H5flutter等 2、小程序架构-WebH5JSVUE框架等 ----------------------------------- 1、渗透命令-常规命令文

    2024年01月24日
    浏览(32)
  • C语言学习笔记 VScode设置C环境-06

    目录 一、下载vscode软件  二、安装minGW软件  三、VS Code安装C/C++插件 3.1 搜索并安装C/C++插件  3.2 配置C/C++环境 总结 在官网上下载最新的版本 Download Visual Studio Code - Mac, Linux, Windows https://code.visualstudio.com/download   注意: 1.在安装过程不要有中文、特殊字符这些,还有其他盘符

    2024年02月15日
    浏览(37)
  • 数据分析基础-数据可视化学习笔记06-交互架构

    对视觉表⽰进⾏操作 · 视觉分析的可视化应有助于对视觉表⽰数据的操作 · ⼀系列反馈回路 · 概述 · 放⼤/缩⼩ · 选择 · 筛选 · 查找相关信息 · 促进数据空间的探索。 · 选择和操作 · 直接处理数据的视觉表⽰。 · 探索与导航 · 理解并⾛过视觉呈现的空间。 从列表中选

    2024年02月10日
    浏览(30)
  • Unity——2D小游戏笔记整理

    【每日一句:清晨和夜晚都请用尽全力去生活】 目录 一、环境搭建 二、人物 三、相机跟随人物移动 四、平铺精灵 五、血条跟随敌人行走 六、脚本逻辑 【玩家行走方法】 【玩家跳跃方法】 【改变玩家血量值方法】 【创建玩家子弹方法】 【主角血量,改变血条遮罩】 【敌

    2024年02月09日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包