【发布时间】:2021-08-16 13:33:11
【问题描述】:
我当前的代码使用世界方向,但我需要它来使用我的相机的方向(忽略 y 轴)
这是我当前的代码:
{
public GameObject Cam;
public Rigidbody rb;
public float movespeed = 10f;
private float xInput;
private float yInput;
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
ProcessInputs();
}
private void FixedUpdate()
{
//movement
Move();
}
private void ProcessInputs()
{
xInput = Input.GetAxisRaw("Horizontal");
yInput = Input.GetAxisRaw("Vertical");
}
private void Move()
{
rb.AddForce(new Vector3(xInput, 0f, yInput) * movespeed);
}
}
我认为问题出在最后一行,我尝试增加相对力,但由于它附着在一个滚动的球上,它不起作用我已经尝试了几个小时才能让它起作用,但它可能真的容易,我只是有一个非常光滑的大脑。 我已经搜索了我能找到的每一个教程,每一个 reddit 帖子,甚至谷歌的第二页。我找不到这个非常简单的任务的解决方案。我正在将几个教程拼接在一起,以制作我的科学怪人代码怪物,因为我是统一编码的新手。
当我按下 w 时,我正在寻找球在相机面对的方向上移动,当我按下 d 和 s 时,我正在寻找相机的左侧。我让球移动,但是当我转动相机(使用单独的功能齐全的脚本)时,球保持其运动轴。
【问题讨论】:
-
您需要详细说明您想要的结果与您获得的结果。为什么
yInput像new Vector3(xInput, 0f, yInput)这样在z 坐标中?是为了你所追求的结果的特定目的吗?可以查看Transform.Forward,获取世界空间中的局部z轴。使用.up和.right,您可以获得世界空间中3 个局部轴中的任何一个。还要检查Transform.InverseTransformDirection