总目录

1.攻击碰撞盒的创建

在玩家下面新建两个空物体命名为攻击一和攻击二。然后为两个物体分别添加碰撞盒,根据帧动化来调整碰撞盒位置。并都打开触发器

为俩个攻击盒添加触发器事件

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(0);if (state.IsName("attack2") || state.IsName("attack4")){v.y += (atkItemsBack * 5*atkItemsUp);}collision.GetComponent<Rigidbody2D>().velocity=v* atkItemsBack+Vector3.right*h* playerSpeedInfectBack*5;}}
}

2.帧事件的创建

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

教学链接https://blog.csdn.net/qq_15020543/article/details/83443966?spm=1001.2014.3001.5506

注意:帧事件的脚本必须添加在有animator组件的物体下,通过帧事件调运脚本里面的函数

在玩家player下加入新脚本 AttackBox

using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class AttackBox : MonoBehaviour
{public float attackMovedis = 1;//攻击移动距离private Rigidbody2D rig;//获取刚体private Animator ani;//获取动画器private AnimatorStateInfo state;//动画状态private Transform attack1;//子物体private Transform attack2;// Start is called before the first frame updatevoid Start(){rig=gameObject.GetComponent<Rigidbody2D>();ani = gameObject.GetComponent<Animator>();attack1 = transform.Find("attack1");attack2 = transform.Find("attack2");}// Update is called once per framevoid Update(){}//帧事件public void Attackenemy(){state = ani.GetCurrentAnimatorStateInfo(0);float dir = Input.GetAxisRaw("Horizontal");//按住方向-1 0 1float lookatdir = gameObject.transform.localScale.x;//朝向//攻击移动if(dir == 0) {if (state.IsName("attack1") || state.IsName("attack3")){rig.velocity = new Vector3(attackMovedis * 5 * lookatdir / Mathf.Abs(lookatdir), 0, 0); //按住方向键大移动-对于动画1,3冲刺动画}}else{rig.velocity = new Vector3(attackMovedis * 10 * dir, 0, 0);//不按方向键小移动}//激活攻击碰撞盒if (state.IsName("attack1") || state.IsName("attack3")){attack1.gameObject.SetActive(true);}else if (state.IsName("attack2") || state.IsName("attack4")){attack2.gameObject.SetActive(true);}Invoke("endAttackenemy", 0.05f);//延时调运,关闭碰撞盒}//结束攻击 因我第2节课设置了连击动画95%到下一动画,所以结束事件应该在最后一帧前面public  void endAttackenemy(){state = ani.GetCurrentAnimatorStateInfo(0);//关闭攻击碰撞盒if (state.IsName("attack1") || state.IsName("attack3")){attack1.gameObject.SetActive(false);}else if (state.IsName("attack2") || state.IsName("attack4")){attack2.gameObject.SetActive(false);}}
}

在这两个帧事件中,我在关键攻击帧中触发了攻击攻击,在攻击事件中我又增加了角色攻击时微小向前移动和冲刺攻击。然后在 Invoke("endAttackenemy", 0.05f);时间要足够小,不然在endAttackenemy函数中判断状态时会略过这个状态,延时调运,关闭碰撞盒

.

3.测试 ,新建一个标签为items的物体desk。

为这个物体添加刚体,碰撞盒,标签设置为items(新建)

主角主动攻击思路如下图

下一篇

5.Unity2D 横版 对象池的创建_ζั͡ ั͡雾 ั͡狼 ั͡✾的博客-CSDN博客Unity2D 横版 对象池的创建。对象池的好处是不用频繁的毁坏和创建重复预制体,而是通过激活与非激活来对重复预制体进行管理。增加了游戏的流畅性。https://blog.csdn.net/qq_54263076/article/details/125667394

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

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

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

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

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

  3. 5.Unity2D 横版 对象池的创建

    总目录 注意右边enemy的激活与非激活状态 对象池的好处是不用频繁的毁坏和创建重复预制体,而是通过激活与非激活来对重复预制体进行管理.增加了游戏的流畅性. 1.建立enemy预制体+刚体2D+碰撞盒 ...

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

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

  5. 2.Unity2D 横版 帧动画sprite animation+动画状态机animator+丝滑连击动作

    ax总目录 1.帧动画sprite animation的创建 2.动画状态机animator 教学链接https://blog.csdn.net/linxinfa/article/details/94 ...

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

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

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

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

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

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

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

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

最新文章

  1. Java EE CDI Producer方法教程
  2. 单片机的内存分配(变量的存储位置)详解
  3. 拆轮子:requests
  4. OpenCV waitKey 无法正常捕捉方向键(上下左右),总结和解决方案,可以用waitKeyEx...
  5. mysql添加外键失败
  6. python趣味编程_戏说《西游记》之Python趣味编程:第四回 拜师学艺 破盘中之谜...
  7. 在线luhn算法 php,Luhn算法说明及PHP实现
  8. 【webrtc】基于libyuv的转换
  9. centos服务器磁盘清理
  10. 大学生微信公众号使用情况调查
  11. Android 6.0 运行时权限管理最佳实践
  12. 新计算机的word无法输入文字,【WORD为什么无法输入文字?】word如何转换excel
  13. 如何将接近开关作为限位开关连接?
  14. 数云融合丨知识图谱在烟草零售数字化转型中的应用
  15. 吉他谱_C调往后余生(新手友好
  16. 一位中科院自动化研究所博士毕业论文的致谢
  17. python魔术方法(一)
  18. SAP ABAP BOM 创建 CSAP_MAT_BOM_CREATE 多备选BOM
  19. 【微信公众号开发】获取用户信息时,有时成功获取,有时提示“invalid openid hint”
  20. WORD “锁定标记”的功能

热门文章

  1. Sekiro RPC框架部署使用
  2. SpringBoot中文文档 SpringBoot中文参考指南 SpringBoot中文参考文档 springboot中文文档 springboot中文
  3. linux设备模型:bus概念及pci_bus分析
  4. 表情包APP小程序制作开发功能有哪些?
  5. 30分钟用python+pyechart写一个近期深圳的疫情地点展示
  6. 电脑删除的照片怎么找回来?总结了四种方法
  7. 心理测评软件语音导读播报功能:2022年率先实现的一个功能
  8. Python-投骰子(random,plotly)
  9. SQL SUM() 函数
  10. Linux那些事儿之我是U盘--引子