建立一个cube作为player,建立一个plane作为地面并且Tag设置为Terrain。

将下面脚本NewBehaviourScript绑定到相机上。然后把cube拖到脚本里。

点击鼠标左键在地面上即可看到cube慢慢移动到鼠标点击的位置

unity之人物移动到鼠标点击位置_Time



脚本NewBehaviourScript源码如下:

using UnityEngine;
using System.Collections;


//该代码实现,在地面上一个位置点击鼠标,player就会慢慢移动到点击的位置
public class NewBehaviourScript : MonoBehaviour
{
int moveSpeed = 50;//player移动速度
public Transform player;//定义一个人物的Transform
private Vector3 endposition,startpos;

void Start()
{
endposition = player.transform.position;
startpos =new Vector3 (0, 257f, -870);
}

void Update()
{

if(Input.GetMouseButtonUp(0))
{ //LeftMouse是在inputManager中设置的,左键值为mouse 0
PlayerMove();
}
Vector3 targetposition = startpos;
transform.position = targetposition;//相机的目标位置,这两句代码的作用是让人物一直处于相机的视野下
if (endposition != player.transform.position)
{
player.position = Vector3.MoveTowards(player.position, endposition, Time.deltaTime * moveSpeed);
}
}


void PlayerMove()
{
Vector3 cursorScreenPosition = Input.mousePosition;//鼠标在屏幕上的位置
Ray ray = Camera.main.ScreenPointToRay(cursorScreenPosition);//在鼠标所在的屏幕位置发出一条射线(暂名该射线为x射线)
RaycastHit hit;

if (Physics.Raycast(ray,out hit,1000))
{
if (hit.collider.gameObject.tag == "Terrain")
{//设置地形Tag为Terrain
endposition = hit.point;
}
}
}



}