美文网首页Unity技术分享
Unity-塔防游戏之怪物波次简单算法

Unity-塔防游戏之怪物波次简单算法

作者: Unity与iOS的灵魂小白 | 来源:发表于2017-06-02 22:02 被阅读312次

   塔防游戏是非常经典的游戏 它的玩法也比较简单 一波接着一波的怪物出来  怪物沿着固定的路线行走 玩家需要控制攻击塔在怪物到达终点时 将它消灭 否则 到达终点的怪物超过一定的数量 玩家就输了 

一、每一波的怪物的属性是不同的 比如说 它的移动速度 生命值、怪物数量等。 

二、需要设置一共多小波 每一波出现的时间间隔 每一波怪物间的间隔

让我们开始吧:

1. 先确定好两个位置 一个是怪物出现的位置 一个是怪物行走的终点位置  

2. 创建怪物预设体  给怪物加上控制脚本 代码如下:

usingSystem.Collections;

usingSystem.Collections.Generic;

usingUnityEngine;

usingUnityEngine.AI;  

// 波次结构体

public struct Wave

{

//波次间隔

public float waveInterval;

//怪物间隔

public float monsterInterval;

//怪物个数

public int monsterCount;

//怪物移动速度

public float monsterSpeed;

//怪物血量

public float monsterHealth;

}

public class MonsterInit:MonoBehaviour{

//怪物出生点

publicTransformbegin;

//怪物预设体

public GameObject monsterPrefab;

//波次

public int waveCount=10;

//波次数组

public Wave[] waves;

//可以初始化

private bool canInit=true;

//计数器、计时器

private float waveTimer=0;

private float monsterTimer=0;

private int waveIndex=0;

private int monsterIndex=0;

void Awake()

{

// 初始化数组

waves=new Wave[waveCount];

}

思路如下:每一波的怪物会越来越强 那么我我就以第一波为为基础 然后在循环设置接下来的每一波 每一波在每一波的基础上去增强属性。 

voidStart()

{

//设置第一波怪的信息

waves[0].waveInterval=5f;

waves[0].monsterInterval=1.5f;

waves[0].monsterCount=5;

waves[0].monsterSpeed=0.3f;

waves[0].monsterHealth=100;

for(inti=1;i<waves.Length;i++)

{

waves[i].waveInterval=waves[0].waveInterval-i*0.1f;

waves[i].monsterInterval=waves[0].monsterInterval-i*0.1f;

waves[i].monsterCount=waves[0].monsterCount+i;

waves[i].monsterSpeed=waves[0].monsterSpeed+i*0.2f;

waves[i].monsterHealth=waves[0].monsterHealth+i*10f;

}

}

//Updateiscalledonceperframe

voidUpdate(){

if(!canInit)

return;

waveTimer+=Time.deltaTime;

if(waveTimer>=waves[waveIndex].waveInterval)

{

//如果当期波次的怪物没有生成完毕

if(monsterIndex<waves[waveIndex].waveInterval)

//怪物计时器计时

monsterTimer+=Time.deltaTime;

if(monsterTimer>=waves[waveIndex].monsterInterval){

GameObjectcurrentMonster=Instantiate(monsterPrefab,begin.position,Quaternion.identity);

//设置怪物导航速度

currentMonster.GetComponent().speed=waves[waveIndex].monsterSpeed;

//怪物计数器++

monsterIndex++;

//怪物计时器归零

monsterTimer=0;

//Debug.Log("初位置"+begin.position);

}

}

else

{

//波次++

waveIndex++;

//怪物计数器归零

monsterIndex=0;

//波次计时器归零

waveTimer=0;

//怪物计时器归零

monsterTimer=0;

if(waveIndex>=waveCount){

canInit=false;

}

}

}

}

}

相关文章

  • Unity-塔防游戏之怪物波次简单算法

    塔防游戏是非常经典的游戏 它的玩法也比较简单 一波接着一波的怪物出来 怪物沿着固定的路线行走 玩家需要控制攻击塔...

  • 2020-03-28

    《无限塔防》 作者:轻云淡 文案: 意外身亡后,云娴进入到“无限塔防”游戏。游戏规则:1.玩家作为英雄阻止怪物抵达...

  • js数据类型对象(Object)的自动排序问题

    前言 这两天碰到一个问题。发现游戏(塔防类游戏)中炮塔寻怪算法有误,炮塔无法准确的找到最危险的怪物(也就是射程范围...

  • 九游评分8.0,《塔防之光》创新玩法打破塔防刻板印象

    剑与铠甲,怪物与玫瑰,圣经与骑士,这浓浓的中世纪风情,很难想象出自于一款塔防游戏中。塔防游戏在人们的印象中可能还停...

  • 皇家守卫军(Kingdom Rush)系列游戏评测

    塔防游戏虽然操作相对简单,但是富有挑战性,又能消磨时间,因此广受玩家喜爱。有一款著名的塔防游戏,皇家守卫军(Kin...

  • 技术支持

    游戏介绍: 宝石塔防与一般的塔防游戏不同,宝石塔防的地图是极其开放和自由的,玩家需要不断规划和建造迷宫,来延缓一波...

  • 一零计划:MMO技能体系的二次元塔防游戏

    总评:出色的二次元美少女塔防游戏,核心玩法设计巧妙,但是烂俗的系统也让人觉得很肝很累。 推荐人群:二次元游戏,塔防...

  • 萝卜英雄:拯救王的战争

    可操控的塔防游戏!还在为塔防的没操作感而感到无聊么?试试这款不一样的塔防游戏吧! 【游戏特色】 操作:采用触屏操作...

  • 植物大作战-天天僵尸来袭

    这是一款可操控的塔防游戏,尽在横扫僵尸!还在为塔防的没操作感而感到无聊么?试试这款不一样的塔防游戏吧! 【游戏简介...

  • 《辐射塔防》:花团锦簇的战争游戏

    前言: 关于塔防游戏,在我上大学的时候,曾是一款怪物按照指定路线移动的地图副产品,在那个大家都在研究“乱矿流”、“...

网友评论

    本文标题:Unity-塔防游戏之怪物波次简单算法

    本文链接:https://www.haomeiwen.com/subject/zlzufxtx.html