总目录

注意右边enemy的激活与非激活状态

对象池的好处是不用频繁的毁坏和创建重复预制体,而是通过激活与非激活来对重复预制体进行管理。增加了游戏的流畅性。

1.建立enemy预制体+刚体2D+碰撞盒+animator+标签改为enemy

2.Unity2D 横版 帧动画sprite animation+动画状态机animator+丝滑连击动作_ζั͡ ั͡雾 ั͡狼 ั͡✾的博客-CSDN博客Unity2D 横版 帧动画sprite animation+动画状态机animator+丝滑连击动作 为什么设置了attack之后还要设置normalizedTime参数?因为如果设置一个参数的话,你点击攻击按钮会直接跳转到下一个动作。并不能完整的将攻击动作放完,那么就多添加一个。他们参数用来判断行为达到哪个阶段,并通过脚本来控制他们参数在进入因为和退出行为时都设置normalizedTime成零。这样就可以使得你点击攻击按钮动作放完了之后才到下一个动作。.........https://blog.csdn.net/qq_54263076/article/details/125631721?spm=1001.2014.3001.5501

注意:最后组件和标签改完后,拖动形成预制体,不然后面改动的敌人相当于一个变体

2.简单对象池脚本

思路就是创建一个公共的集合来管理被废弃的角色/预制体,或者克隆预制体

using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class Pool : MonoBehaviour
{//集合public List<GameObject> list = new List<GameObject>();//游戏预设体public GameObject GoPrefab;//最大个数public int MaxCount = 50;//对象保存对象池public void Push(GameObject go){if (list.Count < MaxCount){list.Add(go);//改为非激活go.SetActive(false);}else {Destroy(go);}}//对象池中取出对象public GameObject Pop() {if (list.Count > 0) {GameObject go = list[0];list.RemoveAt(0);//设置为激活状态go.SetActive(true);return go;}return Instantiate(GoPrefab);}//清除对象池public void Clear(){list.Clear();}
}

3.初始化空物体下创建一个敌人管理器的空物体,然后再让管理器物体下插入对象池脚本和敌人生成脚本。

敌人生成脚本(为了测试,只是按键生成)

using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class GenEnemy : MonoBehaviour
{public List<GameObject> lisEnemy = new List<GameObject>();private float time;private Pool pool;//获取敌人对象池// Start is called before the first frame updatevoid Start(){pool = GetComponent<Pool>();}// Update is called once per framevoid Update(){//按键生成敌人if (Input.GetKeyDown(KeyCode.K)){   //对象池取出对象GameObject enemyGo = pool.Pop();//设置为激活状态enemyGo.SetActive(true);//加入存活集合来进行管理lisEnemy.Add(enemyGo);}}
}

4.敌人碰撞盒检测事件

4.Unity2D 横版 帧事件+攻击判定+冲砍挑飞+更真实的打击_ζั͡ ั͡雾 ั͡狼 ั͡✾的博客-CSDN博客Unity2D 横版 帧事件+攻击判定+冲砍挑飞+更真实的打击1.攻击碰撞盒的创建在玩家下面新建两个空物体命名为攻击一和攻击二。然后为两个物体分别添加碰撞盒,根据帧动化来调整碰撞盒位置。并都打开触发器.........https://blog.csdn.net/qq_54263076/article/details/125654235?spm=1001.2014.3001.5501

using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class attackTrigger : MonoBehaviour
{private Transform player;//获取人物private Animator ani;//获取人物动画器private AnimatorStateInfo state;//动画状态public float atkItemsBack = 1;public float atkItemsUp = 1;public float playerSpeedInfectBack = 1;// Start is called before the first frame updatevoid Start(){player = gameObject.transform.parent;ani = player.GetComponent<Animator>();}// Update is called once per framevoid Update(){}public void OnTriggerEnter2D(Collider2D collision){//攻击到了物品或敌人产生击退if (collision.tag == "items" || collision.tag == "enemy"){//获取人物与物品位置向量Vector3 v = collision.transform.position-player.position ;//冻结z轴v.z = 0;//获取横轴,速度影响击退距离float h = Input.GetAxis("Horizontal");//如果处于动画2,4时额外实施向上的力、速度//挑飞state = ani.GetCurrentAnimatorStateInfo(1);if (state.IsName("attack2") || state.IsName("attack4")){v.y += (atkItemsBack * 5*atkItemsUp);}collision.GetComponent<Rigidbody2D>().velocity=v* atkItemsBack+Vector3.right*h* playerSpeedInfectBack*5;}//攻击到了敌人if (collision.tag == "enemy"){//销毁敌人//找到敌人管理器GameObject em= GameObject.Find("EnemyManager");//找到被攻击到的敌人GameObject enemyGo = collision.gameObject;//在敌人管理器中找到敌人对象池,并保存信息em.GetComponent<Pool>().Push(enemyGo);}}
}

下一篇

6.Unity2D 横版 受击反馈+跟随血条+延时/延迟扣血+协程的应用_ζั͡ ั͡雾 ั͡狼 ั͡✾的博客-CSDN博客Unity2D 横版 受击反馈+跟随血条+延时/延迟扣血+协程的应用在我的程序里,我也使用了攻击碰撞盒的建立。并且是通过受击动画和击退来完成受击反馈的。最后通过协程来结束受击判定条件。当然根据大佬的教程来说,如果并没有受击动画的话,咱们可以改变动画播放速度+协程调回原来的速度和改变精灵图变白色来进行受击反馈。由于血条需要移动,如果用UI的话(UI必须放在画布下面且固定),需要计算坐标,很难处理。所以直接加上去血条作为角色的子体更加方便,我们需要创建一个血条空对象。然后在血条项下加入最大血条,延迟扣血血条和目https://blog.csdn.net/qq_54263076/article/details/125684177

5.Unity2D 横版 对象池的创建相关推荐

  1. 14.Unity2D 横版 粒子系统特效 飙血粒子+高处落地粒子+对象池管理所有粒子

    主目录https://blog.csdn.net/qq_54263076/category_11900070.html?spm=1001.2014.3001.5482 粒子系统常用属性介绍 开始 1. ...

  2. 9.Unity2D 横版 简单AI 之 敌人跳跃条件优化+自动范围内检测敌人发起攻击(索敌)+对象池优化+主角受伤死亡

    总目录https://blog.csdn.net/qq_54263076/category_11900070.html?spm=1001.2014.3001.5482 1.动画animation和动画 ...

  3. 4.Unity2D 横版 帧事件+攻击判定+冲砍挑飞+更真实的打击

    总目录 1.攻击碰撞盒的创建 在玩家下面新建两个空物体命名为攻击一和攻击二.然后为两个物体分别添加碰撞盒,根据帧动化来调整碰撞盒位置.并都打开触发器 为俩个攻击盒添加触发器事件 using Syste ...

  4. 10.Unity2D 横版 简单AI 之 敌人随机移动+自动巡逻+障碍物跳跃+悬崖处转身+射线检测

    总目录 9.Unity2D 简单AI 之 敌人跳跃条件优化+自动范围内检测敌人发起攻击(索敌)+对象池优化+主角受伤死亡_ζั͡ ั͡雾 ั͡狼 ั͡✾的博客-CSDN博客Unity2D 简单AI 之 ...

  5. 6.Unity2D 横版 受击反馈+跟随血条+延时/延迟扣血+协程的应用

    总目录https://blog.csdn.net/qq_54263076/category_11900070.html?spm=1001.2014.3001.5482 1. 受击反馈 用 Unity ...

  6. 7.Unity2D 横版 未受伤害时,血条缓慢变透明+伤害数值显示(浮动,大小,颜色)+协程的应用

    总目录https://blog.csdn.net/qq_54263076/category_11900070.html?spm=1001.2014.3001.5482 1.血条缓慢变淡 我们都知道,当 ...

  7. 15.Unity2D 横版 骨骼动画 之 单张切片图骨骼动画+Aseprite像素画软件

    主目录https://blog.csdn.net/qq_54263076/category_11900070.html?spm=1001.2014.3001.5482 b站视频:骨骼动画 骨骼动画的原 ...

  8. unity2D横版游戏教程-2 代码实现

    接下来就是写代码的时候 我们创建一个文件夹用来存我们的脚本,名字就叫Scripts,在里面右键->Create->C#Script,这样就创建好了一个脚本 直接将这个脚本拖给我们Hiera ...

  9. 17.Unity2D 横版 骨骼动画 之 动画中局部骨骼旋转+多层动画共同控制+局部骨骼索敌攻击

    主目录 承接上节课 16.Unity2D 横版 骨骼动画 之 单张PSB图+PS像素画软件_ζั͡ ั͡雾 ั͡狼 ั͡✾的博客-CSDN博客上一节课我们学习了单张的切片图,是最简单的一种骨骼动画,但 ...

最新文章

  1. 这有一份 Git 日常使用清单,你需要吗?
  2. 好的开始是成功的一半:网页优化之标题篇
  3. 用 javascript 获取当页面上鼠标(光标)位置
  4. 在游戏里模拟天空的颜色,太迷人了!
  5. POJ - 1041 John's trip(欧拉回路)
  6. linux添加window启动
  7. Ubuntu 键盘错位解决 更改键盘布局
  8. Windows Server 2008 配置使用动态IP和备用地址
  9. 选择什么技术,才能不被淘汰?180 所高校在增设这个专业!
  10. extundelete数据恢复
  11. Provisioning Services 7.8 入门系列教程之九 手动更新虚拟磁盘
  12. 推荐一款优秀的注册表和临时文件等清理软件-CCleaner
  13. Vertex Tools顶点编辑v2.0.4最新版 SketchUp插件免费下载!
  14. 单节2A锂电池充电芯片方案,PD和QC快充充电器5-12V输入
  15. 第十四周助教工作总结——NWNU李泓毅
  16. 【转】写给自学者的入门指南
  17. 全排列算法(字典序法、SJT Algorithm 、Heap's Algorithm)
  18. matlab的syms无法在函数中使用_syms(matlab中syms的用法)
  19. 关于cmake与make
  20. 大陆引进《火影忍者》角色中文译名雷人出炉

热门文章

  1. 常见的专用服务器有哪几种呢
  2. 备战金九银十,腾讯 T4 梳理 2022 年最全 999 道 Java 岗必备面试题答案
  3. 电影网站国内服务器行么,做电影网站用什么服务器,可不可以用香港主机
  4. 凯云水利水电工程造价系统 (三) 材料单价 (2)
  5. 图新地球系列教程-标绘编辑:(项目实战技巧,做出好看实用的标绘)
  6. 【学习笔记】NLP之影评情感分类
  7. dg怎么了(最近dg怎么了)
  8. 【论文阅读】Video Generation from Single Semantic Label Map-CVPR2019
  9. Leetcode 1134:阿姆斯特朗数(超详细的解法!!!)
  10. 中国医科大学2021年9月《护理研究》作业考核试题