【问题标题】:How do I make the player move in the direction of the camera如何让玩家朝着相机的方向移动
【发布时间】:2020-10-28 14:27:00
【问题描述】:

这是我的动作脚本

[SerializeField]
Vector3 movement;
[SerializeField]
KeyCode Up;
[SerializeField]
KeyCode Down;
public Rigidbody rb;

private void Start()
{
    rb = GetComponent<Rigidbody>();
}

void FixedUpdate()
{
    if (Input.GetKey(Up))
    {
        rb.velocity += movement;
    }

    if (Input.GetKey(Down))
    {
        rb.velocity -= movement;
    }
}

这是我的相机脚本

[SerializeField]
Transform transTarget;
[SerializeField]
float speed;
    
void Update()
{
    transform.position = transTarget.position;
    float h = speed * Input.GetAxis("Mouse X");
    transform.Rotate(0, h, 0);  
}

基本上,如果我用相机转 180 度,然后按向上箭头前进,我的玩家就会后退。我想解决这个问题。

【问题讨论】:

    标签: c# unity3d camera game-physics


    【解决方案1】:

    您不必创建 2 个单独的代码来创建第一人称控制器,这就是我认为您正在尝试做的事情。你只需要做一个去播放器的事情。相机必须是玩家的孩子并且在其中。您必须告诉玩家,当您按下向上或向下时,他们必须朝那个方向移动,首先,您必须使用以下函数检测玩家是向上还是向下按下: Input.GetAxis("Horizo​​ntal") 将给出按下向上时为 1,按下向下时为 -1,如果按下其他任何按钮,则为 0。之后,你必须告诉他女巫 id 去:transform.formward,在他面前,乘以你想要的速度。

    [SerializeField]
    Vector3 movement;
    [SerializeField]
    KeyCode Up;
    [SerializeField]
    KeyCode Down;
    public Rigidbody rb;
    
    public float Sensibility, Speed;
    
    private void Start()
    {
        rb = GetComponent<Rigidbody>();
        Cursor.lockState = CursorLockMode.Locked;
        Speed = 100;
        Sensibility = 100;
    
    }
    void FixedUpdate()
    {
        float h = Sensibility * Input.GetAxis("Mouse X") * Time.deltaTime;
        transform.Rotate(Vector3.up * h);
    
        rb.velocity = Input.GetAxis("Vertical") * Speed * transform.forward * Time.deltaTime;
    }
    

    但这是一个非常基本的动作,我推荐这个视频来了解更多信息:https://www.youtube.com/watch?v=_QajrabyTJc

    【讨论】:

      猜你喜欢
      • 2014-06-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-18
      相关资源
      最近更新 更多