Хочу сделать что то типо того
https://www.youtube.com/watch?v=X36-jM- ... 0%9F%8E%AE
Сейчас персонаж вертится за мышкой.
Синтаксис:
Используется csharp
public class MouseController : MonoBehaviour
{
private Vector2 Direction;
private Rigidbody2D _rb;
void Start()
{
_rb = GetComponent<Rigidbody2D>();
}
void Update()
{
Direction = Camera.main.ScreenToWorldPoint(Input.mousePosition);
}
private void FixedUpdate()
{
Vector2 LookDir = Direction - _rb.position;
float angle = Mathf.Atan2(LookDir.y, LookDir.x) * Mathf.Rad2Deg - 90f;
_rb.rotation = angle;
}
}
{
private Vector2 Direction;
private Rigidbody2D _rb;
void Start()
{
_rb = GetComponent<Rigidbody2D>();
}
void Update()
{
Direction = Camera.main.ScreenToWorldPoint(Input.mousePosition);
}
private void FixedUpdate()
{
Vector2 LookDir = Direction - _rb.position;
float angle = Mathf.Atan2(LookDir.y, LookDir.x) * Mathf.Rad2Deg - 90f;
_rb.rotation = angle;
}
}
Но вот как сделать правильно перемещение, я не совсем понимаю. Нужно чтоб персонаж двигался в сторону направления мыши, при нажатии клавиши вперед(W) и соответственно "Стрейфил" при нажатии A или D и шел назад от мыши при нажатии S. Сейчас же он просто ходит по "Направляющим"
Синтаксис:
Используется csharp
public class KeyboardController : MonoBehaviour
{
[SerializeField]
private float Speed = 5f;
private Vector2 Movement;
private Rigidbody2D _rb;
void Start()
{
_rb = GetComponent<Rigidbody2D>();
}
private void Update()
{
Movement.x = Input.GetAxisRaw("Horizontal");
Movement.y = Input.GetAxisRaw("Vertical");
}
private void FixedUpdate()
{
_rb.velocity = Movement * Speed;
}
}
{
[SerializeField]
private float Speed = 5f;
private Vector2 Movement;
private Rigidbody2D _rb;
void Start()
{
_rb = GetComponent<Rigidbody2D>();
}
private void Update()
{
Movement.x = Input.GetAxisRaw("Horizontal");
Movement.y = Input.GetAxisRaw("Vertical");
}
private void FixedUpdate()
{
_rb.velocity = Movement * Speed;
}
}