1.
Objetivo
Aprenderas un patron muy util: leer un click sobre el suelo y mover un personaje hacia ese punto de forma clara y controlable.

Usa ScreenPointToRay, Physics.Raycast y MoveTowards para crear un controlador simple de click-to-move.
Resumen de la leccion
Aprenderas un patron muy util: leer un click sobre el suelo y mover un personaje hacia ese punto de forma clara y controlable.
30-40 min / Principiante
Un click en el suelo define el siguiente destino.
Puntos antes de empezar
La leccion se sigue mejor cuando sabes que debe pasar en pantalla y que cuenta como completado.
Aprenderas un patron muy util: leer un click sobre el suelo y mover un personaje hacia ese punto de forma clara y controlable.
Convierte el click en un rayo 3D con Camera.main.ScreenPointToRay y detecta el suelo con Physics.Raycast.
Un click en el suelo define el siguiente destino.
using UnityEngine;
public class ClickMoveController : MonoBehaviour
{
[SerializeField] private float moveSpeed = 5f;
[SerializeField] private LayerMask groundLayer;
private Vector3 targetPosition;
private bool hasTarget;
private void Start()
{
targetPosition = transform.position;
}
private void Update()
{
if (Input.GetMouseButtonDown(0))
{
var ray = Camera.main.ScreenPointToRay(Input.mousePosition);
if (Physics.Raycast(ray, out RaycastHit hit, 100f, groundLayer))
{
targetPosition = hit.point;
hasTarget = true;
}
}
if (!hasTarget) return;
transform.position = Vector3.MoveTowards(
transform.position,
new Vector3(targetPosition.x, transform.position.y, targetPosition.z),
moveSpeed * Time.deltaTime
);
}
}