创建一个怪物模板给他定一个点让他每隔3秒在给定的位置随机生成怪物
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class sjgw : MonoBehaviour
{// S这个脚本间隔一点时间生成怪物
/*1.程序逻辑
* 1. 设计一个计时器
* 2.间隔一段时间3s执行一下 *
*/
float SaveTime = 0f;
// 定义一个浮点型变量SaveTime并初始化为0,用于记录经过的时间。
public GameObject OneMonsterPre;
//用于存放将要克隆的怪物的预制体。
public Transform MonsterCenterPOS;
// 用于存放怪物生成的中心点的位置。
float CloneX;
float CloneZ;
// 定义两个浮点型变量CloneX和CloneZ,用于存储克隆怪物的新位置的x和z坐标。
void Update()
{
SaveTime += Time.deltaTime;
// 将每一帧经过的时间加到SaveTime上,这样即使帧率不同,经过的时间也会是恒定的。
if (SaveTime >= 3)
// 如果经过的时间大于或等于3秒,就执行下面的代码。
{
Debug.Log("时间超过3秒");
SaveTime = 0;
CloneMonster();
}
}//endupdate
// 在Update方法中,当SaveTime超过3秒时,会打印一条消息,然后重置SaveTime并调用CloneMonster方法来生成怪物。
void CloneMonster()
// 定义一个名为CloneMonster的方法,用于生成怪物。
{
Debug.Log("生成随机数");
for (int i = 0; i < 2; i++)
// 在控制台打印一条消息表示正在生成随机数,并且循环3次。
{
CloneX = Random.Range(-1f, 15f) + MonsterCenterPOS.position.x;
CloneZ = Random.Range(1f, 13f) + MonsterCenterPOS.position.z;
// 在循环中,生成新的x和z坐标,这些坐标在游戏世界中是随机的,但会基于MonsterCenterPOS的位置。
Vector3 TempPos = new Vector3(CloneX, MonsterCenterPOS.position.y, CloneZ);
Debug.Log("随机坐标" + TempPos);
// 创建一个新的Vector3来存储新的位置,并在控制台打印这个位置。
GameObject TempOBJ = GameObject.Instantiate(OneMonsterPre, TempPos, Quaternion.Euler(new Vector3(Random.Range(0, 0), 0, Random.Range(0, 0))));
// 使用GameObject.Instantiate方法来克隆OneMonsterPre预制体,将它放置在新的位置,并给它一个随机的旋转。克隆出来的对象会被存储在TempOBJ变量中。
Destroy(TempOBJ, 3f);
} // 在循环结束后,使用Destroy方法来销毁这个新生成的对象,销毁时间为3秒。
}
}