基于Unity3d的google小恐龙游戏7-----第五个Boss以及场景切换

前言

上一篇文章中,我没有设计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的关节一点一点拼上去,不得不说,这个想法还是很笨的,而且也让后面的一些行为难以实现,属于是吃力不讨好那种。所以我更改了我的想法!

这里提一下对于这个敌人我的想法--首先仿照游戏本家的怪物设计,世界吞噬者会从地里对玩家进行突击,并且会不时吐出口水攻击玩家&

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值