先让子弹打到敌机,可以让敌机受伤.毁坏,那首先给敌机一个受伤的动画,这次就用Animation创造一个动画来用,在Hierarchy选到敌机身上,按Animation的Create就能在敌机身上建造一个动画系统罗(找不到视窗请在window->Animation…等)
开好动画系统後,把EnemyA跟EnemyAHit拖曳到Animation里面,可以让她闪烁两次就拖曳两次或Ctrl+C复制跟Ctrl+V贴上,目前闪烁伤害太快看不出来,用滑鼠框选每一帧,可以把时间拉长,按Animation里的▶尝试看看你要闪烁的快慢
做完受伤闪烁後,一样在Hierarchy选到敌机身上的Animator,开启一个空的动画,在Parameters按+号新增一个Trigger暂取hit(Trigger一个触发值,只会碰触到的时间点开启)
在新开空的动画上按右键选Set as Layer Default State让这个动画成为预设动画(起始动画),之後就开始接动画线
这次用Any State(任何状态下)->被攻击到(hit)就会到闪烁动画,闪烁动画拨放完毕後回起始状态(记得闪烁动画的Loop要关掉)
最後再开启敌机的程序(EnemyAI),稍作修改一下
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class EnemyAI : MonoBehaviour
{
//给动画系统一个名称anim
private Animator anim;
[SerializeField] float speed = 3f;
bool right;
//序列划一个Hp=10
[SerializeField] float hp = 10f;
void Start()
{
right = true;
//anim=动画系统
anim = GetComponent<Animator>();
}
// Update is called once per frame
void Update()
{
Move();
}
void Move()
{
if (!right)
{
transform.Translate(speed * -1 * Time.deltaTime, 0, 0);
if (gameObject.transform.position.x <= 0.5)
right = true;
}
if (right)
{
transform.Translate(speed * 1 * Time.deltaTime, 0, 0);
if (gameObject.transform.position.x >=5.5)
right = false;
}
}
//当碰撞器触发进入时反应(触发的物件)
//某个物件要勾is trigger才能使用(子弹有勾)
private void OnTriggerEnter2D(Collider2D collision)
{
//如果(碰触到的物件标签为"PlayerBullet")
if(collision.tag == "PlayerBullet")
{
//Hp扣5
hp -= 5f;
//开启动画系统名为hit的trigger
anim.SetTrigger("hit");
//如果hp小於等於0
if (hp <= 0)
//自我删除
Destroy(gameObject);
}
}
}
Colab连结 Batch Normalization 到底要放在激励函数之前还是之後呢?这是之前我...
arrary很别好理解,一维arrary就是线,二维arrary就是面,三维arrary就是立方体,...
PHP常量 可以使用 const 关键字或 define() 函数两种方法来定义一个常量。函数 de...
最後讲一段读取下一码流水号的作法 1.根据前端解析到的选项,每一个属性相加之後,在流水号之前的都是前...
848. Shifting Letters https://leetcode.com/problem...