我試圖重新使用 this視頻門戶的場景。視頻下面是場景資源和腳本的鏈接。爲什麼傳送不能正常工作?
我現在面臨一個問題遠距傳物:
球員應該通過在門戶網站的平面觸發走到移動到第二門的位置。但在我看來,在傳送後,他出現在第二個門戶的平面觸發器中間。如果他繼續前進,他會跳回到第一個門戶,然後再跳到第二個門戶,等等。
爲什麼會發生,如何能解決嗎?據我瞭解腳本的作者,它應該通過觸發器後傳送玩家,但腳本不適合我這樣的工作。
這裏是隱形傳輸腳本:
using UnityEngine;
using System.Collections;
public class Sender : MonoBehaviour {
public GameObject player;
public GameObject receiver;
private float prevDot = 0;
private bool playerOverlapping = false;
void Start() {
}
void Update()
{
if (playerOverlapping) {
var currentDot = Vector3.Dot(transform.up, player.transform.position - transform.position);
if (currentDot < 10) // only transport the player once he's moved across plane
{
// transport him to the equivalent position in the other portal
float rotDiff = -Quaternion.Angle(transform.rotation, receiver.transform.rotation);
rotDiff += 180;
player.transform.Rotate(Vector3.up, rotDiff);
Vector3 positionOffset = player.transform.position - transform.position;
positionOffset = Quaternion.Euler(0, rotDiff, 0) * positionOffset;
var newPosition = receiver.transform.position + positionOffset;
player.transform.position = newPosition;
playerOverlapping = false;
}
prevDot = currentDot;
}
}
void OnTriggerEnter(Collider other)
{
if (other.tag == "Player")
{
playerOverlapping = true;
}
}
void OnTriggerExit(Collider other)
{
if (other.tag == "Player")
{
playerOverlapping = false;
}
}
}
非常感謝,我會嘗試這種方式,但看起來這是我需要的! – Rumata