实现鼠标点击地面实现人物在地面移动(c#)

来源:互联网 发布:sql server 2008注册码 编辑:程序博客网 时间:2024/04/30 12:51

建立一个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;            }        }    }}


0 0