先讓子彈打到敵機,可以讓敵機受傷.毀壞,那首先給敵機一個受傷的動畫,這次就用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);
}
}
}