天天减肥网,内容丰富有趣,生活中的好帮手!
天天减肥网 > unity怪物攻击玩家减血_Unity-塔防游戏之怪物波次简单算法

unity怪物攻击玩家减血_Unity-塔防游戏之怪物波次简单算法

时间:2019-07-04 07:10:25

相关推荐

unity怪物攻击玩家减血_Unity-塔防游戏之怪物波次简单算法

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

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

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

让我们开始吧:

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[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

//怪物计时器计时

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怪物攻击玩家减血_Unity-塔防游戏之怪物波次简单算法》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。