朝物体面向的方向移动物体? C#

Move an Object in the direction it is facing? C#

有这样的问题,但我在 C# 中找不到任何答案,所以这是我的问题:我想旋转一个对象(在 Unity 5 中)在它面对的方向。我目前有这个代码来旋转我的播放器。

using UnityEngine;                                                       
using System.Collections;

public class Movement : MonoBehaviour
{
    private bool isLeft = false;

    void Update()
    {
        if (Input.GetMouseButtonDown(0))
        {
            if (isLeft == false)
            {
                transform.rotation = Quaternion.Euler(90, 45,0);
                isLeft = true;
                Debug.Log("Turned Right");
            }
            else
            {
                transform.rotation = Quaternion.Euler(90, -45, 0);
                Debug.Log("Turned Left");
                isLeft = false;
            }
      }
}

好的答案的完整编辑,所以你有一个箭头,无论它朝向哪个方向,你都希望它移动它朝向的方向,当玩家点击它时它会旋转 45 度。

简单的部分是转动它,基本上你会调用一个 onclick() 函数或在对象上设置碰撞器并写一个简短的片段检查当鼠标点击时它是否等于你的 arrow.name 或碰撞器.如果是这样,为 Vector3 设置一个新变量来存储新的旋转,并将 45 添加到对象旋转并将游戏对象的新旋转设置为新的旋转变量。

虽然你的问题和描述有点模棱两可,但你似乎想将箭头朝它所面对的方向移动,对吗?

确保游戏对象中的箭头指向前方。您可以通过选择场景中的游戏对象来查看前进是什么。前进将是蓝色箭头。

现在在代码中,要朝这个方向移动它,您可以通过多种不同的方式移动它。申请 force/Translate/Set 职位。我建议您尝试一下,看看哪种外观和感觉最好。要简单地更改其位置:

transform.position += transform.forward * Time.deltaTime * movementSpeed;

其中移动速度是一个描述它应该移动多快的浮点数。如果将此代码放入 Update() 中,则需要 Time.deltaTime。