Переключение переключения на преобразование по оси y

#c# #unity3d

#c# #unity3d

Вопрос:

Я пытаюсь перевернуть свое преобразование, когда переворачиваю своего персонажа. Часть, которую я пытаюсь перевернуть, является дочерним элементом «Player», и я хочу перевернуть ее по оси Y, установив масштаб на: -1

 void FixedUpdate()
{

    movement.x = Input.GetAxisRaw("Horizontal");
    //rb.MovePosition(rb.position   movement * moveSpeed/2 * Time.deltaTime);
    if (Input.GetKey(KeyCode.LeftShift))
    {
        rb.MovePosition(rb.position   movement * sprintSpeed * Time.fixedDeltaTime);
    }
    else
    {
        rb.MovePosition(rb.position   movement * moveSpeed/2 * Time.fixedDeltaTime);
    }


    if (facingRight == false amp;amp; movement.x > 0)
    {
        Flip();
        //weaponHolder.localScale = new Vector3(transform.localScale.x, transform.localScale.y * -1, transform.localScale.z);  //Tried here but dont work
    }
    else if (facingRight == true amp;amp; movement.x < 0)
    {
        Flip();
        //weaponHolder.localScale = new Vector3(transform.localScale.x, transform.localScale.y * -1, transform.localScale.z);  //Tried here but dont work
    }



}



void Flip()
{
    facingRight = !facingRight;
    GetComponent<SpriteRenderer>().flipX = !facingRight;
    childHand = GameObject.Find("Hand");
    childHand.GetComponent<SpriteRenderer>().flipY = !facingRight;

    //weaponHolder.transform.localScale = scaleChange;

    weaponHolder.localScale = new Vector3(transform.localScale.x, transform.localScale.y * -1, transform.localScale.z);  //Tried here but dont work
}
 

Моя проблема в том, что он переворачивает его один раз, но он не будет переворачиваться обратно. Как мне «переключить» этот тип переключения назад и вперед в приведенном выше коде?
Я попытался перевернуть спрайтерендерер, но это не подходящее решение для оружия, потому что оно содержит игровые объекты, в которых я создаю экземпляры систем пуль / частиц и т. Д…

Ответ №1:

Я думаю, вам нужно отслеживать, когда он установлен на -1 масштаб, и если он перевернут (масштаб равен -1), затем установите его обратно на обычный масштаб (1). Инициализируйте перевернутую переменную как false.

     bool flipped = false;
    if (flipped){
    weaponHolder.localScale = new Vector3(transform.localScale.x, transform.localScale.y * 1, transform.localScale.z); 
    flipped = false;
    }
    else{
    weaponHolder.localScale = new Vector3(transform.localScale.x, transform.localScale.y * -1, transform.localScale.z); 
    flipped = true
    } 
 

Комментарии:

1. Сработало как шарм! Спасибо, сэр!

2. Не беспокойтесь !! 🙂