参考:
【Unity2D】实现人物攻击动画以及代码展示_dangoxiba的博客-CSDN博客
【Unity2D】实现人物攻击动画以及代码展示_dangoxiba的博客-CSDN博客
有空了解我上一篇的文章
学习内容:
首先我们把画好的Enemy动画帧给导出来
(记得把背景层给关了成透明的)
此时我们在unity中将每一帧切割出来(我是32*32),然后把第一张作为游戏对象,把1-3作为Idle的Animation,4—6作为Attack
再为游戏对象添加一个PolycanCollider2D的组件画好区域
代码部分:我们创建一个叫Enemy的抽象类,用来给其它Enemy调用(如伤害和血量等)
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public abstract class Enemy : MonoBehaviour
{
public int health;
public int damage;
public void Start()
{
}
public void Update()
{
if(health <= 0)
{
Destroy(gameObject);
}
}
public void TakeDamage(int damage)
{
health -= damage;
}
}
并创建一个EnemyWenZi继承Enemy
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class EnemyWenZi : Enemy
{
// Start is called before the first frame update
public void Start()
{
base.Start();
}
// Update is called once per frame
public void Update()
{
base.Update();
}
}
同时在PlayerAttack的脚本也需要加一个碰撞检测的方法
private void OnTriggerEnter2D(Collider2D other)
{
if (other.gameObject.CompareTag("Enemy"))
{
other.gameObject.GetComponent<Enemy>().TakeDamage(damage);
}
}
学习时间:
不要忘记添加新建一个Tag叫Enemy给wenzi,然后设置好damage,health的参数
上面就完成了一个敌人并且能击杀
学习产出:
膨胀检测private void OnTriggerEnter2D(Collider2D other)
标签检测if (other.gameObject.CompareTag("Enemy"))
继承用abstract,并将造成伤害的方法TakeDamage()公共化。
在碰撞检测里即可调用其它脚本的TakeDamge()