如何更改玩家的默认攻击方向?

How to change default attack direction for player?

我在我的平台游戏中对我的玩家进行了编码,这样他就会在你按下 space 时用剑攻击。当我 运行 正确时它会攻击。当我 运行 离开时它向左攻击。但是当我默认站着不动时,它会向左攻击。我如何让它攻击正确?

下面是我的播放器控制器脚本中的所有代码,还有我的混合树的图像。

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


public class PlayerController : MonoBehaviour
{
    public int moveSpeed;

    private Animator anim;

    public int playerJumpPower = 1250;
    private float moveX;
    public bool isGrounded;
    public float fJumpWaitTime = 0.2f;
    private float fJumpWait;
    private object col;
    private bool attacking;
    public float attackTime;
    private float attackTimeCounter;

    // Start is called before the first frame update
    void Start()
    {
        anim = GetComponent<Animator>();
    }

    // Update is called once per frame
    void Update()
    {
        if (!attacking)
        {
            if (Input.GetButtonDown("Jump"))
            {
                Jump();
            }
            if (Input.GetAxisRaw("Horizontal") > 0.5f || Input.GetAxisRaw("Horizontal") < -0.5f)
            {
                transform.Translate(new Vector3(Input.GetAxisRaw("Horizontal") * moveSpeed * Time.deltaTime, 0f, 0f));
            }
            void Jump()
            {
                //Jumping Code
                GetComponent<Rigidbody2D>().AddForce(Vector2.up * playerJumpPower);
                isGrounded = false;
            }
            void OnCollisionEnter2D(Collision2D col)
            {
                Debug.Log("Player has collided with " + col.collider.name);
                if (col.gameObject.tag == "ground")
                {
                    isGrounded = true;
                }
            }
        }
        
        anim.SetFloat("MoveX", Input.GetAxisRaw("Horizontal"));

        if (Input.GetKeyDown(KeyCode.Space))
        {
            attackTimeCounter = attackTime;
            attacking = true;   
            anim.SetBool("Attack", true);    
        }
if(attackTimeCounter > 0)
        {
            attackTimeCounter -= Time.deltaTime;
        }

if(attackTimeCounter <= 0)
        {
            attacking = false;
            anim.SetBool("Attack", false);
        }
    }
}

再次查看您的 Blend Tree 后,我会检查您的 Threst 是否是问题所在。

你现在拥有的是:

PlayerAttackLeft 0 -1

PlayerAttackRight 1 1

你应该拥有的:

PlayerAttackLeft -0.01 -1

PlayerAttackRight 0 1