30天轻松学会unity自制游戏-伤害敌人

先让子弹打到敌机,可以让敌机受伤.毁坏,那首先给敌机一个受伤的动画,这次就用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);
        }
    }
}

<<:  [Day-1] 记录C++开发环境安装过程

>>:  [Day10] CH07:站在巨人的肩膀上——方法

【26】你都把 Batch Normalization 放在 ReLU 前面还是後面

Colab连结 Batch Normalization 到底要放在激励函数之前还是之後呢?这是之前我...

Day17

arrary很别好理解,一维arrary就是线,二维arrary就是面,三维arrary就是立方体,...

[Day5]PHP常量

PHP常量 可以使用 const 关键字或 define() 函数两种方法来定义一个常量。函数 de...

29.移转 Aras PLM大小事-额外编码取号(3)

最後讲一段读取下一码流水号的作法 1.根据前端解析到的选项,每一个属性相加之後,在流水号之前的都是前...

LeetCode解题 Day08

848. Shifting Letters https://leetcode.com/problem...