【Unity2D】实现人物攻击动画以及代码展示
作者:互联网
学习目标:
实现人物攻击动画以及代码展示
上一个文章:CSDNhttps://mp.csdn.net/mp_blog/creation/editor/122686996
学习内容:
首先先在Player游戏对象中创建一个空对象作为子对象,然后添加组件Polygon Collider2D,将Attack调到关键帧,然后再编辑Collider的范围
同时动画系统中,因为目前的所有条件都可以到Attack,所以我们把Any State和Attack建立关系,然后要让Attack有CD冷却有间隔,我们要把Attack返回其它动画的Transition设置为有存在时间间隔,并且在每一个中都添加一个Condition
随后我们在Projet Setting中设置一个名字为Attack的并在PostiveButton给一个键盘按键(我的是j键)
接着在代码搞一下
在PlayerAttack创建一个名字叫PlayerAttack的脚本
用的是PlayerAttack的C#脚本
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerAttack : MonoBehaviour
{
public int damage;
public float intervalTime;
public float startTime;
private Animator myAnim;
private PolygonCollider2D poly2D;
void Start()
{
myAnim = GameObject.FindGameObjectWithTag("Player").GetComponent<Animator>();
poly2D = GetComponent<PolygonCollider2D>();
}
void Update()
{
Attack();
}
//这下面两个协成的意思还是,当按下Attack时,先触发动画,然后在等待一点时间开始触发hitbox,
//最后再等待一点时间取消hitbox
void Attack()
{
if (Input.GetKeyDown(KeyCode.J))
{
myAnim.SetTrigger("Attack");
StartCoroutine(StartHitBox());
}
}
IEnumerator StartHitBox()
{
yield return new WaitForSeconds(startTime);
poly2D.enabled = true;
StartCoroutine(disableHitBox());
}
IEnumerator disableHitBox()
{
yield return new WaitForSeconds(intervalTime);
poly2D.enabled = false;
}
}
这下面两个协成的意思还是,当按下Attack时,先触发动画,然后在等待一点时间开始触发hitbox,最后再等待一点时间取消hitbox
然后我们把PlayerAttack的PolyconCollider2D先把钩给取消掉
并在脚本中填上适当的参数。可以在游戏中播放Attack动画一开始时,通过暂停后一帧一帧的播放观察是否会同时出现和消失
学习产出:
首先是Input.GetBuutonDown()自己设置一个Attack的按键,然后延迟调用(有三种方法,协成,Invoke(),Time.timescale),
调用动画myAnim.SetTrigger("Attack");GameObject.FindGameObjectWithTag()通过Tag寻找游戏对象
标签:动画,Unity2D,poly2D,展示,Attack,PlayerAttack,哔哩,public 来源: https://blog.csdn.net/dangoxiba/article/details/122690051