[英]Changing player rotation to a camera rotation
我是團結的新手,目前正在開發類似門戶的游戲。
我完成了整個隱形傳送腳本,並且可以正常工作,但是問題來了,我沒有實現播放器攝像頭校正,實際上我不知道該怎么做。 其概念是,當您通過門戶跳躍時,應將玩家(或玩家攝像機)的旋轉更改為來自您的門戶/門戶攝像機的旋轉,以使最終效果更加“真實”。
我已經嘗試了player.transform.rotation = portal.transform.rotation
傳送腳本中的某些行,例如player.transform.rotation = portal.transform.rotation
但是最后它沒有用,現在我一無所有,刪除了以前的腳本並試圖一遍又一遍地編寫再次。
如果有人可以指導我如何開始編寫代碼,我會感到很高興。 我應該在onTriggerEnter
(當您通過門戶跳轉時)還是在onTriggerExit
? 該腳本應該附加到播放器還是門戶? 我應該只從攝像機還是從整個游戲對象(門戶/玩家)收集旋轉? 我還發布了幾個屏幕(帶有一個視頻,它當前的工作方式以及整個傳送腳本。如果我錯過了什么,請問我,我將其發布在這里。
https://imgur.com/a/pbqYnLD-具有門戶檢查器的屏幕
https://streamable.com/b14hk-視頻工作原理
隱形傳送腳本:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Teleportation : MonoBehaviour {
[SerializeField] private GameObject otherPortal;
[SerializeField] private GameObject player;
void OnTriggerEnter(Collider col) {
if(col.tag == "Player") {
col.transform.position = new Vector3(otherPortal.transform.position.x+1, otherPortal.transform.position.y+1, otherPortal.transform.position.z+1);
Debug.Log("wszedłem w portal");
}
}
void Update() {
}
}
一些信息,目前如何編碼:
您所做的是正確的(將玩家旋轉設置為門戶。您可以在設置位置后在onTriggerEnter
進行操作,然后看起來像
player.transform.rotation = otherPortal.transform.rotation
如果這樣做,播放器將具有相同的旋轉角度。 您已經擁有使照相機跟隨播放器的功能,因此可能不需要設置照相機旋轉角度。 我不知道您的相機如何操作,所以我不確定。 如果攝像機的方向不正確,則執行Camera.main.transform.rotation = otherPortal.transform.rotation
。
剩下的可能是您的播放器(和照相機)沒有朝向右軸。 在您的視頻上,我可以看到門戶面向x軸(Unity編輯器中的紅色軸)。 檢查前進時,播放器的紅色軸是否向前。
您的播放器很有可能具有z軸(藍色)朝前,(按照慣例)更正確,並且適合Unity使用的名稱(z軸也稱為前向軸)
我建議創建門戶對象(以及其他所有對象,包括播放器),以使前向軸為藍色。 可能需要編輯對象。 在任何情況下,請檢查玩家前進軸是否與傳送門相同,否則無法設置旋轉角度
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.