iT邦幫忙

2021 iThome 鐵人賽

DAY 10
0
Mobile Development

30天輕鬆學會unity自製遊戲系列 第 10

30天輕鬆學會unity自製遊戲-傷害敵人

  • 分享至 

  • twitterImage
  •  

先讓子彈打到敵機,可以讓敵機受傷.毀壞,那首先給敵機一個受傷的動畫,這次就用Animation創造一個動畫來用,在Hierarchy選到敵機身上,按Animation的Create就能在敵機身上建造一個動畫系統囉(找不到視窗請在window->Animation…等)
https://ithelp.ithome.com.tw/upload/images/20210910/20140598YYZ84O0lFH.png
開好動畫系統後,把EnemyA跟EnemyAHit拖曳到Animation裡面,可以讓她閃爍兩次就拖曳兩次或Ctrl+C複製跟Ctrl+V貼上,目前閃爍傷害太快看不出來,用滑鼠框選每一幀,可以把時間拉長,按Animation裡的▶嘗試看看你要閃爍的快慢
https://ithelp.ithome.com.tw/upload/images/20210910/20140598m5CWYhgn2Y.png
做完受傷閃爍後,一樣在Hierarchy選到敵機身上的Animator,開啟一個空的動畫,在Parameters按+號新增一個Trigger暫取hit(Trigger一個觸發值,只會碰觸到的時間點開啟)
https://ithelp.ithome.com.tw/upload/images/20210910/20140598wNIvCXGKPx.png
在新開空的動畫上按右鍵選Set as Layer Default State讓這個動畫成為預設動畫(起始動畫),之後就開始接動畫線
https://ithelp.ithome.com.tw/upload/images/20210910/20140598DvneLKg8oV.png
這次用Any State(任何狀態下)->被攻擊到(hit)就會到閃爍動畫,閃爍動畫撥放完畢後回起始狀態(記得閃爍動畫的Loop要關掉)
https://ithelp.ithome.com.tw/upload/images/20210910/201405989VoesEpWyp.png
最後再開啟敵機的程式(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);
        }
    }
}

上一篇
30天輕鬆學會unity自製遊戲-製作敵人
下一篇
30天輕鬆學會unity自製遊戲-敵機反擊
系列文
30天輕鬆學會unity自製遊戲30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言