Решаем задачу:
- Вид с верху;
- Персонаж (спрайт) должен перемещаться к месту клика мышью;
- Персонаж должен поворачиваться по направлению движения.
Решение:
using UnityEngine;
public class Player : MonoBehaviour
{
private Vector3 _positionMove;
private float _speed = 1f;
private void Start()
{
_positionMove = transform.position;
}
private void Update()
{
UpdateInput();
UpdateMove();
}
private void UpdateInput()
{
if (Input.GetMouseButtonDown(0))
{
_positionMove =
UnityEngine.Camera.main.ScreenToWorldPoint(Input.mousePosition);
_positionMove.z = 0;
}
}
private void UpdateMove()
{
float moveDelta = (_positionMove - transform.position).magnitude;
if (moveDelta <= _speed * Time.deltaTime)
{
transform.position = _positionMove;
return;
}
Vector3 moveDir = _positionMove - transform.position;
//
float angle = Mathf.Atan2(moveDir.y, moveDir.x) * Mathf.Rad2Deg - 90;
transform.rotation = Quaternion.Euler(new Vector3(0, 0, angle));
//
moveDir.Normalize();
transform.position += moveDir * _speed * Time.deltaTime;
}
}
- Вид с верху;
- Персонаж (спрайт) должен перемещаться к месту клика мышью;
- Персонаж должен поворачиваться по направлению движения.
Решение:
using UnityEngine;
public class Player : MonoBehaviour
{
private Vector3 _positionMove;
private float _speed = 1f;
private void Start()
{
_positionMove = transform.position;
}
private void Update()
{
UpdateInput();
UpdateMove();
}
private void UpdateInput()
{
if (Input.GetMouseButtonDown(0))
{
_positionMove =
UnityEngine.Camera.main.ScreenToWorldPoint(Input.mousePosition);
_positionMove.z = 0;
}
}
private void UpdateMove()
{
float moveDelta = (_positionMove - transform.position).magnitude;
if (moveDelta <= _speed * Time.deltaTime)
{
transform.position = _positionMove;
return;
}
Vector3 moveDir = _positionMove - transform.position;
//
float angle = Mathf.Atan2(moveDir.y, moveDir.x) * Mathf.Rad2Deg - 90;
transform.rotation = Quaternion.Euler(new Vector3(0, 0, angle));
//
moveDir.Normalize();
transform.position += moveDir * _speed * Time.deltaTime;
}
}
Спасибки!
ОтветитьУдалить