【问题标题】:C# UNITY 2D trying to flip the sprite in the x directionC# UNITY 2D 试图在 x 方向翻转精灵
【发布时间】:2018-11-20 00:17:46
【问题描述】:

我要做的就是当敌人转身时,它的精灵会翻转,下面的代码是我所管理的,但现在它只在两次接近但不是我需要的方向改变后翻转。请帮忙。

   [HideInInspector]
    public bool facingRight = true;
    public float speed;
    Rigidbody2D rbody;
    public float timer;
    Animator anim;
    public float directionx;

// Use this for initialization

void Start()
    {
        rbody = GetComponent<Rigidbody2D>();

        StartCoroutine(Move(timer));
    }



    IEnumerator Move(float timer)
    {
        while (0 < 1)

        {
            Vector2 targetVelocity = new Vector2(directionx, 0);

            rbody.velocity = targetVelocity * speed;

            yield return new WaitForSeconds(timer);

            facingRight = !facingRight;

            Vector3 theScale = transform.localScale;

            theScale.x *= -1;

            transform.localScale = theScale;

            Vector2 targetVelocity1 = new Vector2(-directionx, 0);

            rbody.velocity = targetVelocity1 * speed;

            yield return new WaitForSeconds(timer);
        }

    }

}

【问题讨论】:

  • 我知道你已经接受了一个答案,但是如果你使用SpriteRenderer 来渲染你的精灵,你为什么不直接使用flipX 属性,这不应该解决问题吗? SpriteRenderer.flipX

标签: c# unity3d


【解决方案1】:

代码非常不言自明,您只需要设置一个变量即可知道玩家开始移动的方向(在我的情况下为m_FacingRight),然后决定您希望何时发生“翻转”调用@ 987654322@:

private bool m_FacingRight = true;  // For determining which way the player is currently facing.  

private void flipFunction()
{
  // Switch the way the player is labelled as facing.
  m_FacingRight = !m_FacingRight;

  // Multiply the player's x local scale by -1.
  Vector3 theScale = transform.localScale;
  theScale.x *= -1;
  transform.localScale = theScale;    
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-16
    • 1970-01-01
    • 1970-01-01
    • 2022-07-26
    • 2021-11-18
    • 1970-01-01
    相关资源
    最近更新 更多