#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;
}