Unity Turn动画参数(float)保持重置为零使第三人称角色再次前进

时间:2017-04-16 02:07:09

标签: animation unity3d parameters game-physics

我的角色可以向前走,但是当我按下" w" (前进)和" a" (左)然后释放" a"他回到原来朝向前方的方向走路。

好像控件让他按照指南针走路。每次WASD键将他转向同一方向,W为北,S为南,无论他的方向如何。

我注意到我的Turn参数,它是一个浮动,当我转动时开始移动,但慢慢地重置为零,将我的角色转回到北方向。有任何想法吗?谢谢!

2 个答案:

答案 0 :(得分:0)

我不确定你的意思,但这就是我让我的玩家移动的方式*

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PlayerController : MonoBehaviour
{

    public float walkSpeed;
    public float runSpeed;
    public float turnSpeed;
    void Update()
    {
        invControl = GetComponent<InventoryController>();
        if (Input.GetKey(KeyCode.W))
        {
            WalkForward();
        }
        if (Input.GetKey(KeyCode.W) && Input.GetKey(KeyCode.LeftShift))
        {
            RunForward();
        }
        if (Input.GetKey(KeyCode.S))
        {
            WalkBack();
        }
        if (Input.GetKey(KeyCode.S) && Input.GetKey(KeyCode.LeftShift))
        {
            RunBack();
        }
        if (Input.GetKey(KeyCode.A))
        {
            TurnLeft();
        }
        if (Input.GetKey(KeyCode.D))
        {
       TurnRight();
        }      
    }
    void WalkForward()
    {
        transform.Translate(Vector3.forward * walkSpeed * Time.deltaTime);
    }
    void WalkBack()
    {
        transform.Translate(Vector3.back * walkSpeed * Time.deltaTime);
    }
    void RunForward()
    {
        transform.Translate(Vector3.forward * runSpeed * Time.deltaTime);
    }
    void RunBack()
    {
        transform.Translate(Vector3.back * runSpeed * Time.deltaTime);
    }
    void TurnLeft()
    {
        transform.Rotate(Vector3.down * turnSpeed * Time.deltaTime);
    }
    void TurnRight()
    {
        transform.Rotate(Vector3.up * turnSpeed * Time.deltaTime);
    }

}

答案 1 :(得分:0)

听起来你正在使用Input.GetAxis()来控制你的角色(就像大多数人一样),只要你没有按下与之相关的键,它就会重置为0。这就是导致您的转弯参数重置的原因。

我认为你控制玩家所需的任何代码都是有缺陷的。我无法帮助你,因为你没有发布任何代码。