Как я могу перевернуть спрайт дочернего объекта?

#c# #unity3d

Вопрос:

Я изменил точку поворота своего пистолета, добавив родительский объект для точки поворота и дочерний объект для спрайта пистолета, и теперь мой пистолет поворачивается вокруг моего игрока.

 public class Gun : MonoBehaviour

{
private Rigidbody2D rb;
public Camera cam;
Vector2 mousePos;
Vector2 lookDir;
private float angle;

void Start()
{
    rb = GetComponent<Rigidbody2D>();
}

void FixedUpdate()
{
    lookDir = mousePos - rb.position;
    angle = Mathf.Atan2(lookDir.y, lookDir.x) * Mathf.Rad2Deg;
    rb.rotation = angle;
}
void Update()
{
    mousePos = cam.ScreenToWorldPoint(Input.mousePosition);
}}
 

но я понятия не имею, как получить доступ к спрайтерендереру дочернего объекта и флипУ, если вращение пистолета больше -90 и меньше 90.

Ответ №1:

Просто сохраните ссылку на SpriteRenderer либо в инспекторе

 // Drag your child object into the according slot via the Inspector within Unity
[SerializeField] private SpriteRenderer spriteRenderer;
 

или с помощью GetComponentInChildren

 private void Awake ()
{
    if(! spriteRenderer) spriteRenderer = GetComponentInChildren<SpriteRenderer>();
}

void FixedUpdate()
{
    lookDir = mousePos - rb.position;
    angle = Mathf.Atan2(lookDir.y, lookDir.x) * Mathf.Rad2Deg;
    rb.rotation = angle;

    spriteRenderer.flipY = -90 < angle amp;amp; angle < 90;     
}