接下来我们布置场景,我们的预期结果(功能分析)是:
? ? ? ? 实现两角色阵列面向冲锋
首先进入资源商店准备下载角色模型资源,
搜索Monster,
将免费资源导入unity包,
创建一个地面Plane,
对两个场景物体完全解压缩,
创建预制体包Prefabs,拖拽放回预制体包,
在场景中删除,
创建Scripts脚本包并创建脚本,
脚本命名为RandomInstance,
双击脚本打开代码编写:
using System.Collections;
using UnityEngine;
public class RandomInstance : MonoBehaviour{
? ? public GameObject monster1; ??//怪物1预制体
????public GameObject monster2; ??//怪物2预制体
????void Start(){
? ? ? ? if (monster1 == null)
? ? ? ? ? ? Debug.LogError("请将砖块预制体拽入参数");
? ? ? ? StartCoroutine(MonsterMatrix1());
? ? ? ? StartCoroutine(MonsterMatrix2());
? ? }
????//迭代器生成一组墙
????IEnumerator MonsterMatrix1(){
? ? ? ? for (int j = 0; j < 10; j++){
????????????//生成一行怪物1
????????????for (int i = 0; i < 10; i++){
? ? ? ? ? ? ? ? //(物体,位置,角度)
? ? ? ? ? ? ? ? Instantiate(monster1, new Vector3(i * 2f, 0f, 50 + j * 2f), Quaternion.AngleAxis(180f, Vector3.up)); ??
????????????????yield return new WaitForSeconds(1.3f); ??//产值
????????????}
? ? ? ? }
? ? }
? ? IEnumerator MonsterMatrix2(){
? ? ? ? for (int j = 0; j < 10; j++){
????????????//生成一行怪物2
????????????for (int i = 0; i < 10; i++){
? ? ? ? ? ? ? ? //(物体,位置,角度)
? ? ? ? ? ? ? ? Instantiate(monster2, new Vector3(i * 2f, 0f, j * 2f), Quaternion.identity);
? ? ? ? ? ? ? ? yield return new WaitForSeconds(0.7f); ??//产值
????????????}
? ? ? ? }
? ? }
}
ctrl + s 保存代码后将RandomInstance.cs脚本绑定在主摄像机MainCamera上,
并将怪物1与怪物2预制体拖拽至脚本框选中,
再创建脚本Speed.cs
编写Speed脚本:
using UnityEngine;
public class Speed : MonoBehaviour{
? ? public float moveSpeed;
? ? void Start(){
????????//初始化一个随机速度
????????moveSpeed = Random.Range(1f, 4f);
? ? }
????void Update(){
? ? ? ? transform.Translate(Vector3.forward * moveSpeed * Time.deltaTime);
? ? }
}
将Speed绑定给Monster1物体,
将Speed绑定给Monster2物体,
调整编辑场景中的视角左键主摄像机 ctrl + shift + f 将运行视角与编辑视角同步,
运行即可实现,
?
End.