Unity实现鼠标点击地面的任意位置,则角色会立即走到鼠标点击的位置

时间:2024-04-02 07:16:20

一、创建一个角色,并给角色添加 CharacterController 控制器,这里以简单的Capsule物体作为角色示例,如下所示:

Unity实现鼠标点击地面的任意位置,则角色会立即走到鼠标点击的位置

二、编写控制角色移动的脚本  RayDemo2_CCWalking.cs

/***
 *
 *  Title: 
 *         射线
 *
 *  Description:
 *        功能:
 *            使用“射线”技术,实现位置定位
 *
 *  Date: 2018
 * 
 *  Version: 1.0
 *
 *  Modify Recorder:
 *     
 */
using UnityEngine;
using System.Collections;

public class RayDemo2_CCWalking : MonoBehaviour{
    private Vector3 VecGoalPosition;                       //移动的目标位置
    CharacterController CC;                                //角色控制器

    void Start(){
        //得到角色控制器
        CC = gameObject.GetComponent<CharacterController>();
    }
	void Update () {
        //确定移动位置
        if (Input.GetMouseButton(0)){
            //定义一个射线
            Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
            RaycastHit hit;
            //如果命中
            if (Physics.Raycast(ray, out hit)){
                VecGoalPosition = hit.point;
            }
        }
        //角色移动
        if (Vector3.Distance(VecGoalPosition, this.transform.position) >0.1F){
            //移动的步伐
            Vector3 step = Vector3.ClampMagnitude(VecGoalPosition - this.transform.position, 0.1f);
            //角色控制器的移动
            CC.Move(step);
        }
	}//UPDATE_END
}

三 、将RayDemo2_CCWalking.cs控制脚本添加给角色,运行项目,使用鼠标点击地面,则角色自动移动到鼠标点击的位置

注:本内容来自《Untiy3D/2D游戏开发从0到1》 第25章