我想在遊戲中製作一個遊戲對象,當它進入觸發器時,它會將我的角色傳送到另一個位置(otherTeleport.transform.position),但是當我使用腳本時我寫過,我的角色不會在那裏傳送,而敵人會。如果我在反彈腳本中放置一個Debug.Log來記錄角色的位置,我會看到我的角色已經在另一個Teleport的位置,但只有一個調試日誌,並且在此之後它回到原始的瞬移位置。這個瞬移將會雙向工作,所以如果用戶轉到一個,它將把它移到第二個,如果他轉到第二個,那麼它將被移植到第一個。傳送腳本不能按預期工作
這裏是我的代碼:
public class TeleportScript : MonoBehaviour {
public GameObject otherTeleport;
private Collider otherTeleportColl;
public bool isNeedToTeleport;
private TeleportScript otherTeleportScript;
private GameObject player;
private Bounce bounceScript;
// Use this for initialization
void Start() {
isNeedToTeleport = true;
otherTeleportColl = otherTeleport.GetComponent<Collider>();
otherTeleportScript = otherTeleport.GetComponent<TeleportScript>();
player = GameObject.Find("Player");
bounceScript = player.GetComponent<Bounce>();
}
// Update is called once per frame
void Update() {
}
void OnTriggerEnter(Collider collider) {
if (isNeedToTeleport == true) {
if (collider.tag == "Enemy") {
otherTeleportScript.setNeedToTeleport(false);
collider.transform.position = otherTeleport.transform.position;
}
if (collider.tag == "Player") {
otherTeleportScript.setNeedToTeleport(false);
bounceScript.player.transform.position = otherTeleport.transform.position;
collider.transform.position = otherTeleport.transform.position;
bounceScript.playerTransform.position = otherTeleport.transform.position;
}
}
}
void OnTriggerExit(Collider collider) {
Debug.Log ("TELEPORTED OUT");
setNeedToTeleport(true);
otherTeleportScript.setNeedToTeleport(true);
}
public void setNeedToTeleport(bool value) {
if (value == true) {
isNeedToTeleport = true;
}
else {
isNeedToTeleport = false;
}
}
}
任何幫助,將不勝感激!
我對你的問題的猜測成爲遠距傳物背後的邏輯。如果您的玩家觸發TeleporterA上的瞬間觸發器,它將傳送到TeleporterB。然後你的玩家將觸發TeleporterB上的瞬發觸發器並傳送到TeleporterA。在這裏看到問題?您可能需要設置一個冷卻時間定時器,以便您在每次玩家進入傳送觸發器時不會經常傳送。還有其他一些方法可以解決這個問題,但它們可能會讓圖層變得雜亂無章。我非常懷疑有人會爲您編寫腳本,因此您可能必須自己找出邏輯。 – Savlon