ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

【Unity2D】实现人物攻击动画以及代码展示

2022-01-25 21:00:03  阅读:261  来源: 互联网

标签:动画 Unity2D poly2D 展示 Attack PlayerAttack 哔哩 public


学习目标:

实现人物攻击动画以及代码展示

参考视频:秦无邪OvO的个人空间_哔哩哔哩_Bilibili秦无邪OvO,独立游戏开发者/美术/编曲;秦无邪OvO的主页、动态、视频、专栏、频道、收藏、订阅等。哔哩哔哩Bilibili,你感兴趣的视频都在B站。https://space.bilibili.com/335835274?from=search&seid=4866215390663930110&spm_id_from=333.337.0.0

上一个文章: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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有