[英]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.