Я давно работаю, пытаясь реализовать зажим на моем 2D-объекте в Unity2D. Я боролся с этой проблемой уже несколько недель. У меня есть ракетный корабль, который движется вверх самостоятельно, и я пытаюсь сделать его там, где вы не можете go вращаться дальше 40 градусов. Некоторые детали, на которые следует обратить внимание, это то, что корабль вращается (ось X, конечно) и движется к мышке (ось X, не на 1004 * больше, чем текущая скорость), чтобы избежать препятствий, которые скоро появятся. , Вот мой код для корабля:
public class MiniGameRocketShipController : MonoBehaviour
{
public Vector2 velocity = new Vector2(0f, 1500f);
private Vector2 directionX;
private Vector2 directionY;
public Rigidbody2D rb;
public new Camera camera;
public float moveSpeed = 100f;
public float rotation;
private void Start()
{
rotation = rb.rotation;
}
private void Update()
{
rb.AddForce(velocity * Time.deltaTime);
rb.velocity = new Vector2(directionX.x * moveSpeed, directionY.y * moveSpeed);
FaceMouse();
}
void FaceMouse()
{
if (rotation > 180)
{
rotation = 360;
}
rotation = Mathf.Clamp(rotation, -40f, 40f);
rb.rotation = rotation;
Vector3 mousePosition = Input.mousePosition;
mousePosition = camera.ScreenToWorldPoint(mousePosition);
directionX = (mousePosition - transform.position).normalized;
directionY = transform.position.normalized;
transform.up = directionX;
}
}