来栖野小夏 2025-01-13 20:17 采纳率: 50%
浏览 4
已结题

SetTrigger函数获取参数显示not exist

我想先写由idle向run的过渡条件,
即当getaxis获取到的数不为0时(玩家按下了移动键),播放run动画,但在我按下wasd时控制台显示该参数不存在,为啥啊

img

public class PlayerMove : MonoBehaviour
{
    float moveX; float moveY;
    public Transform playerplace;
    public float Speed = 5;
     private Animator animator;  
    



    void Start()
    {
        animator = GetComponent<Animator>();   
        
    }

   
    void Update()
    {   //实现wasd移动
        moveY = Input.GetAxis("Vertical");
        moveX = Input.GetAxis("Horizontal");
        moveY *= Speed  / (1 / Time.deltaTime + 1);
        moveX *= Speed / (1 / Time.deltaTime + 1);
        Vector3 move = new Vector3(moveX, moveY);
        Vector3 moveconsequence = move + transform.position;
        playerplace.transform.position = moveconsequence;
        //绑定动画
        if (moveX != 0 || moveY != 0) 
        {
            animator.SetTrigger("Trigger_Run");
        }
    }
}

img

  • 写回答

3条回答 默认 最新

  • 道友老李 JWE233286一种基于机器视觉的水表指针读数识别及修正的方法 专利发明者 2025-01-13 20:18
    关注
    让【道友老李】来帮你解答,本回答参考gpt编写,并整理提供,如果还有疑问可以点击头像关注私信或评论。
    如果答案让您满意,请采纳、关注,非常感谢!
    问题分析: 在代码中,我们通过`Input.GetAxis`方法获取玩家输入的移动值,并根据这个值来播放run动画。但是当按下wasd键时,控制台却显示参数不存在。 解决方法:
    1. 确保在Unity中正确设置了输入管理器,确保有"Horizontal"和"Vertical"这两个输入轴。
    2. 如果输入管理器设置正确,但是依然出现参数不存在的错误,可能是因为输入轴的命名问题。Unity默认的是"Horizontal"和"Vertical",如果你手动更改了输入轴的名字,需要根据更改后的名字来获取输入值。
    3. 在检查输入轴的名字之后,可以通过在Update方法中打印获取到的moveX和moveY的值来进行调试,看看是否正常获取到了玩家的输入。 示例代码:
    void Update()
    {
        // 实现wasd移动
        moveY = Input.GetAxis("Vertical");
        moveX = Input.GetAxis("Horizontal");
        // 打印获取到的moveX和moveY的值
        Debug.Log("moveX: " + moveX + ", moveY: " + moveY);
        // 其他逻辑代码
    }
    

    通过以上方法,可以定位到问题并解决掉控制台显示参数不存在的错误。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 1月13日
  • 已采纳回答 1月13日
  • 创建了问题 1月13日