前言
上一篇文章中,我没有设计boss,但是设计了一个比较简单的武器系统,使得玩家具有了攻击手段,由于时间不足,所以没有搞太深入。这次继续设计敌人对象,因为发现这个游戏实例的背景比较单调,所以去wiki里面找了一些背景图片,简单做了一个背景切换的功能对象。还有就是,嵌入式那篇文章我说想要搞什么锁链组件,最后发现不适用于我想制作的东西。所以放弃了,而且在开发过程中发现了一个2d图形开发的一个关键组件---SpriteRenderer,可以修改对象所显示的2d图像,非常实用,本次练习也用了很多跟这个组件有关的功能。那么开始这次练习。
背景切换器
由于觉得游戏实例背景一片白,十分单调,所以设计了一个背景切换的功能,在击杀boss之后会切换到下一个boss有关的背景。但是因为时间原因,本来打算想把小怪也重新设计一次的(说实话,确实可以,下个星期会尝试一下)。本次设计只由背景切换的脚本。
逻辑很简单,首先创建一个空的GameObject,然后对其添加SpriteRenderer组件,以及一个名为backGround的脚本。脚本内容为,包含场景贴图的sprite对象,spr渲染器对象,以及一些判定的定义等,update中不断测试是否到达了击杀boss之后的波次---(wave-1)%5=0&&numofsummon==0.检测之后修改判定,调用trans函数,trans函数由+1,-1,控制对于sprite的透明度,把原来的背景透明度将为0,然后再把下一个背景透明度拉高,最后完成切换。
以下为切换的代码:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class BackGround : MonoBehaviour
{
[Header("设置")]
public Sprite[] spB;//记录背景
public GameObject cam;
public int index;//目前背景数
public float maxAl;
public bool isChange;
public int tr;
// Start is called before the first frame update
void Start()
{
index = 0;
cam = GameObject.Find("MainCamera");//获取摄像头,目的是其中的脚本
isChange = false;
tr = -1;
}// Update is called once per frame
void Update()
{
Check();
if (isChange == true)
{
Trans();
}
}
void Check()
{
CactusSummoner cas = cam.GetComponent<CactusSummoner>();//获取脚本
if ((cas.wave-1) % 5f == 0&&isChange==false&&cas.numOfSummon == 0&&cas.wave!=1)
{
IndexPlus();//递增index
isChange = true;
}
}
void IndexPlus()
{
if (index >= 4)//根据地图贴图数决定
{
index = 0;
}
else
{
index++;
}
}
void Trans()
{
SpriteRenderer spr = gameObject.GetComponent<SpriteRenderer>();//获取2d渲染器组件
Color coltrans = spr.color;//获取颜色
coltrans.a += 0.001f * (float)tr;
spr.color = coltrans;
if (coltrans.a <= 0)
{
tr *= -1;
spr.sprite = spB[index];
Color tem = spr.color;
tem.a = 0f;
spr.color = tem;
}
print(coltrans.a);
if (coltrans.a >=maxAl&&tr==1)
{
isChange = false;
tr *= -1;
}
}
}
Boss5
本次设计的新敌人依然是来自泰拉瑞亚里的敌人。(因为泰拉wiki好抠图)世界吞噬者,这是一个蠕虫类敌人,正因如此一开始我才说想用锁链去实现他,但是最后发现2d贴图的旋转似乎无法到达我的预期,所以我取消了这个想法。而且,一开始我的想法是用一个空对象作为他的父对象,然后再把这个boss的关节一点一点拼上去,不得不说,这个想法还是很笨的,而且也让后面的一些行为难以实现,属于是吃力不讨好那种。所以我更改了我的想法!
这里提一下对于这个敌人我的想法--首先仿照游戏本家的怪物设计,世界吞噬者会从地里对玩家进行突击,并且会不时吐出口水攻击玩家&