建立一个cube作为player,建立一个plane作为地面并且Tag设置为Terrain。
将下面脚本NewBehaviourScript绑定到相机上。然后把cube拖到脚本里。
点击鼠标左键在地面上即可看到cube慢慢移动到鼠标点击的位置
脚本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;
}
}
}
}