30天轻松学会unity自制游戏-制作BOSS

先把BOSS放在游戏场景的最後面,跟Player一样把3个Boss0~2放到场景上,存一个Boss待机动画,调整一下图层
https://ithelp.ithome.com.tw/upload/images/20210919/20140598mZDYAJcZyQ.png
跟制作敌机一样把受伤动画制作出来,Create New Clip创造出一个Boss的受伤动画,把Boss0~2~Boss Hit都放进动画Animation
https://ithelp.ithome.com.tw/upload/images/20210919/20140598KhwlfdtXkb.png
看你一次受伤要闪烁几次(复制贴上三份),记得最後把Loop Time打勾取消
https://ithelp.ithome.com.tw/upload/images/20210919/20140598mUPpbCvZBY.png
跟敌机一样把hit装上动画控制器,给一个trigger(名称等等程序要用记得要一模一样…)
https://ithelp.ithome.com.tw/upload/images/20210919/20140598Zra757pnrr.png
接下来就来写一下Boss(BossAI)程序,可以拿敌机(EnemyAI)的程序来参考,滑鼠按住程序的名称视窗,可以调整成双边程序
https://ithelp.ithome.com.tw/upload/images/20210919/20140598vwgYjU8LlT.png
可以开始养自己的程序,之後要用都可以拿来参考,慢慢就越来越多方法可以解决专案
https://ithelp.ithome.com.tw/upload/images/20210919/20140598jpCZd6xWDE.png
把敌机先都复制到BossAI(会写程序的也可以用其他方法…),一样加装钢体跟碰撞器Collider(可以把is Trigger点开)…Boss来简单改一下攻击方式.
https://ithelp.ithome.com.tw/upload/images/20210919/20140598jszuT6J0Ka.png
开BossAI跟敌机一样的程序我就不多做解释罗~

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class BossAI : MonoBehaviour
{
    private Animator anim;
    [SerializeField] float speed = 1f;
    bool right;
    [SerializeField] float hp = 100f;
    [SerializeField] GameObject enemyBullet = null;
	//多创造一个物件unity放上小兵
    [SerializeField] GameObject enemy = null;

    void Start()
    {
        right = true;
        anim = GetComponent<Animator>();
        InvokeRepeating("Attack", 1f, 2f);
    }

    // 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.8)
                right = true;
        }
        if (right)
        {
            transform.Translate(speed * 1 * Time.deltaTime, 0, 0);
            if (gameObject.transform.position.x >= 5.2)
                right = false;
        }
    }
    private void OnTriggerEnter2D(Collider2D collision)
    {

        if (collision.tag == "PlayerBullet")
        {
            hp -= 5f;
            anim.SetTrigger("hit");
            if (hp <= 0)
                Destroy(gameObject);
        }
    }
    void Attack()
    {
		//(40%)创造的数字在40下执行
        if(GetRandom(40))
		//创造一个子弹
        Instantiate(enemyBullet, transform.position, Quaternion.identity);
//(30%)否则创造的数字在70下执行(所以40~70才会执行)
else if(GetRandom(70))
        {
			//(回圈五次)(设定一个整数i=0,i小於5时,i会加一)
            for (int i = 0; i < 5; i++)
            {	
//设定一个暂时的三维向量tmep=新的三维向量(x轴+I,y轴不变,Z轴不变)
Vector3 temp = new Vector3(transform.position.x + i, transform.position.y, transform.position.z);
//创造(子弹,刚刚设定暂时的三维位置tmep,角度不变)
                Instantiate(enemyBullet, temp, Quaternion.identity);
            }//这里发出来的子弹就一次五颗
        }
        else if(GetRandom(100)) (30%)否则创造的数字在100下执行(所以
		70~100才会执行)
		//创造(敌机(小兵),位置不变,角度不变)
        Instantiate(enemy, transform.position, Quaternion.identity);

    }
	//取一个布林值名叫GetRandom (要放一个整数p)
    bool GetRandom(int p)
    {
		//设定一个整数o =随机0~100
        int o = Random.Range(0, 100);
		如果(随机的数字小於设定的数字显示true)
        if (o < p)
        {
            return true;
        }
        Else(随机的数字大於设定的数字显示false)
        {
            return false;
        }
    }
}

最後把敌机(小兵),拖曳到预制物,最後在放入Boss的物件空值里
https://ithelp.ithome.com.tw/upload/images/20210919/20140598FOhOAbZ4NL.png


<<:  [D04] 取样与量化(2)

>>:  为何要执行弱点评估

遵守政策的管理制度

-政策框架 最高管理层要求加强资讯安全并通过政策表达他们的保护要求。有效的资讯安全涉及人员、流程和...

那些注定要没什麽用的专案开发法

(终於可以讲这个了.......吗?) 如果能够不用「是否有成功通过验收并结案」来判段专案是否成功,...

[30天 Vue学好学满 DAY2] Vue.js介绍

核心概念-渐进式框架(progressive framework) 一个完整的页面是由各个组件(co...

IOS Swift Protocol经典范例

protocol 范例快速纪录 protocol transferMoney { func give...

Day27 interrupt 的处理程序

前言 昨天讲完了上半部的考量之後,可以知道上半部就是要追求快速,能尽快把事情处理好交给下半部就是上半...