С помощью этого кода я смог заставить своего персонажа двигаться и наводить прицел с помощью контроллера Xbox, используя новую систему ввода Unity. Это также изменит ориентацию сетки так, чтобы она была обращена наружу от центра желаемого персонажа. Однако мой вопрос заключается в том, как мне заставить его прикрепиться к внешнему краю круга. Так, например, если моя палка направлена вправо и только наполовину, она все равно будет в крайнем правом положении, как если бы вы переместили палку до конца. Я также думаю, что, возможно, я немного запутался в координатах и смешиваю их. Когда я тестировал игру, казалось, что 0 — это север, а 180 — юг. Координаты в игре не такие, и я знаю, что ввод с помощью джойстика равен -1 к 1. У меня нет практики в векторной математике, и я это чувствую. Я также буду рад любым советам о том, как улучшить этот код и, возможно, как глубже понять, что происходит, чтобы я мог повторить это снова в будущем. Спасибо.
void FixedUpdate()
{
rigidBody.linearVelocity = new Vector2(moveDirection.x * moveSpeed, rigidBody.linearVelocity.y);
if (isJumping && isGrounded)
{
rigidBody.AddForce(Vector2.up * jumpHeight);
isGrounded = false;
Debug.Log("I Jumped");
}
float angle = 0.0f;
// Top Right Quadrant
if (aimDirection.x >= 0.0f && aimDirection.y > 0.0f)
{
angle = Mathf.Atan(aimDirection.y / aimDirection.x) * 180 / Mathf.PI;
}
// Top Left Quadrant
else if (aimDirection.x < 0.0f && aimDirection.y >= 0.0f)
{
angle = Mathf.Atan(aimDirection.y / aimDirection.x) * 180 / Mathf.PI + 180;
}
// Bottom Right Quadrant
else if (aimDirection.x 0.0f && aimDirection.y