Я начинаю с небольшой стрелялки, но у меня проблема с моим персонажем. Руки должны вращаться на 360º, но тело должно быть направо или налево (в зависимости от того, где происходит вращение рук мышью).
То, что я получил до сих пор, это то, что вы видите в видео ниже, но у меня есть две большие проблемы и с помощью учебников.
Я мог вращать и переворачивать руки, но не тело.
Кроме того, когда он стреляет направо, пули правильно выходят из созданной мною огневой точки, но после того, как оружие переворачивается влево, пули (и огонь оружия) больше не выровнены.
Разве этот подход, который я пробовал, не самый лучший для этой проблемы?
Я ценю вашу помощь.
Ссылка на игру: https://vimeo.com/310853740
Вот мой скрипт поворота руки:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class ArmRotation : MonoBehaviour
{
SpriteRenderer spriteRend;
void Awake()
{
spriteRend = GetComponent<SpriteRenderer>();
}
void Update()
{
AimArmAtMouse();
}
void AimArmAtMouse()
{
Vector2 mousePosition = (Vector2)Camera.main.ScreenToWorldPoint(Input.mousePosition);
Vector2 armToMouse = mousePosition - (Vector2)transform.position;
float rotationZ = Vector2.SignedAngle(transform.right, armToMouse);
transform.Rotate(0f, 0f, rotationZ);
FlipArm(Vector2.SignedAngle(transform.right, Vector2.right));
}
void FlipArm(float rotation)
{
if (rotation < -90f || rotation > 90f)
{
spriteRend.flipY = true;
}
else
{
spriteRend.flipY = false;
}
}
}