Unity: Enemy Generation 代码
Unity: Enemy Generation Code
我几乎完成了游戏。但是,我想产生无限的敌人,就像在回避游戏中一样。但是,我尝试进行研究但没有运气。我怎样才能做到这一点?这是我完成游戏所需要做的唯一事情。
BlockScript.cs代码(敌人代码)如下:
using UnityEngine;
using System.Collections;
public class BlockScript : MonoBehaviour {
private GameObject wayPoint;
private Vector3 wayPointPos;
private Rigidbody2D rigidBody2D;
public bool inGround = true;
private float jumpForce = 400f;
private float speed = 6.0f;
void Start () {
wayPoint = GameObject.Find("wayPoint");
}
private void awake()
{
rigidBody2D = GetComponent<Rigidbody2D>();
}
void Update () {
if (inGround)
{
inGround = false;
rigidBody2D.AddForce(new Vector2(0f, jumpForce));
}
wayPointPos = new Vector3(wayPoint.transform.position.x, transform.position.y,
wayPoint.transform.position.z);
transform.position = Vector3.MoveTowards(transform.position,
wayPointPos, speed * Time.deltaTime);
Vector2 min = Camera.main.ViewportToWorldPoint(new Vector2(0, 0));
if(transform.position.y< min.y)
{
Destroy(gameObject);
}
}
}
典型的解决方案是将您的敌人(GameObject
的完整层次结构)存储在 prefab 中,以便可以从代码中重新使用和实例化它们。然后,创建对您的预制件的引用,并在您认为合适的时候实例化它。例如:
public GameObject EnemyPrefab; // assign this in editor
(...)
Instantiate(EnemyPrefab, transform.position, transform.rotation); // creates a new enemy
您可能需要从一个单独的脚本来控制此功能,而不是从敌人脚本本身(例如,创建一个专门的 EnemySpawner
脚本)
我几乎完成了游戏。但是,我想产生无限的敌人,就像在回避游戏中一样。但是,我尝试进行研究但没有运气。我怎样才能做到这一点?这是我完成游戏所需要做的唯一事情。
BlockScript.cs代码(敌人代码)如下:
using UnityEngine;
using System.Collections;
public class BlockScript : MonoBehaviour {
private GameObject wayPoint;
private Vector3 wayPointPos;
private Rigidbody2D rigidBody2D;
public bool inGround = true;
private float jumpForce = 400f;
private float speed = 6.0f;
void Start () {
wayPoint = GameObject.Find("wayPoint");
}
private void awake()
{
rigidBody2D = GetComponent<Rigidbody2D>();
}
void Update () {
if (inGround)
{
inGround = false;
rigidBody2D.AddForce(new Vector2(0f, jumpForce));
}
wayPointPos = new Vector3(wayPoint.transform.position.x, transform.position.y,
wayPoint.transform.position.z);
transform.position = Vector3.MoveTowards(transform.position,
wayPointPos, speed * Time.deltaTime);
Vector2 min = Camera.main.ViewportToWorldPoint(new Vector2(0, 0));
if(transform.position.y< min.y)
{
Destroy(gameObject);
}
}
}
典型的解决方案是将您的敌人(GameObject
的完整层次结构)存储在 prefab 中,以便可以从代码中重新使用和实例化它们。然后,创建对您的预制件的引用,并在您认为合适的时候实例化它。例如:
public GameObject EnemyPrefab; // assign this in editor
(...)
Instantiate(EnemyPrefab, transform.position, transform.rotation); // creates a new enemy
您可能需要从一个单独的脚本来控制此功能,而不是从敌人脚本本身(例如,创建一个专门的 EnemySpawner
脚本)