如何在触发器上加载预制件,以便我的游戏继续运行

本文关键字:我的 游戏 运行 继续 触发器 加载 | 更新日期: 2023-09-27 18:36:59

我正在Unity中制作一个'运行'游戏,我正在制作一个带有球的原型,该球有其他球跟随他。如果追随者击中了一个物体,他们会在一段时间后被摧毁。我做了一条有障碍物的道路,并预制了它们。现在是我的问题,如何在触发器或其他东西上加载预制件,以便我的游戏继续下去。目标是我不需要制作整个地图,而是从不同道路的预制件中随机选择地图。

如果它有帮助,这是我的主角的代码,我可能会在另一个触发器中加载预制件或其他东西?

这是我的代码。

using UnityEngine;
using System.Collections;
public class Ball : MonoBehaviour {
public float InputForce;
public GUIText guiText;
public float rotationHorizontal;
public AudioClip ACeffect2;
public GameObject zombiePrefab;
void FixedUpdate() {
    rigidbody.AddForce( Camera.main.transform.right * Input.GetAxis("Horizontal") * InputForce);
    rigidbody.AddForce( Camera.main.transform.forward * Input.GetAxis("Vertical") * InputForce);
    transform.position += Vector3.forward *InputForce * Time.deltaTime;
    rotationHorizontal = Input.GetAxis("Horizontal") * InputForce;
    rotationHorizontal *= Time.deltaTime;
    rigidbody.AddRelativeTorque (Vector3.back * rotationHorizontal);
}
void OnCollisionEnter(Collision col){
    if (col.gameObject.name == "Zombie") {
        Debug.Log ("Player geraakt, nu ben je eigenlijk dood");
    }
    if (col.gameObject.name == "Obstakel1") {
        Debug.Log ("Obstakel1 geraakt");
        audio.PlayOneShot(ACeffect2);
        InputForce = 0;
    }
    if (col.gameObject.name == "Obstakel2") {
        Debug.Log ("Obstakel2 geraakt");
    }
}
void AddZombies(int aantal){
    for (int i = 0; i < aantal; i++){
        GameObject go = GameObject.Instantiate(zombiePrefab, transform.position - new Vector3(0, 0, 7 + i),Quaternion.identity) as GameObject;
        Zombie zb = go.GetComponent<Zombie>();
        zb.target = gameObject.transform;
    }
}
void OnTriggerEnter(Collider col) {
    Debug.Log ("Enter" +col.name);
    if (col.tag == "AddZombies"){
        AddZombies(4);
    }
}
void OnTriggerExit(Collider col) {
    Debug.Log ("Leaving with" +col.name);
}
}

如何在触发器上加载预制件,以便我的游戏继续运行

创建一个游戏对象并添加一个包含以下代码的组件:

public GameObject prefab; // Drag and drop prefab to component in unity
// When trigger is triggered
void OnTriggerEnter(Collider col) 
{
    Instantiate(prefab, new Vector3(0,0,0), Quaternion.Identity);
}

然后,您可以将要实例化的预制件拖放到 Unity 中的组件中。该位置可以是您希望它生成的位置(例如transform.position让它在您放置扳机的位置生成)。

请注意,要制作触发器,您需要创建一个新的空游戏对象,并添加您想要在其上的任何碰撞体。要使其调用 OnTriggerEnter 方法,您还需要选中碰撞器组件上的框is trigger