“` public CharacterController c;//角色控制器的获得
“` public Vector3 hitp;//保存碰撞点的向量
“`public bool isMove = false;//判断可否移动
“`void Start()
{
“`c = GetComponent<CharacterController>();//拿到CharacterController控件
}
“`void Update()
{
“`if (Input.GetMouseButtonDown(0))//判断鼠标左键点击
{
“`Ray r = Camera . main. ScreenPointToRay (Input. mousePosition );
//从相机发出射线到鼠标点击的位置
“`RaycastHit Hit;//碰撞信息
“`if (Physics.Raycast(r, out Hit))//通过物理检测,如果碰撞到物体
{
“`if (Hit.collider.name ==”Terrain”)//判断碰撞物体的名字是否为地面
{
“` hitp = Hit.point;//保存碰撞点
“`isMove = true;//检测到地面并保存碰撞点的信息才可以移动
}
}
}
“`float disf = Vector3.Distance(hitp, transform.position);//获取两点之间的位置距离
“`if (disf>1f&&isMove==true)//判断移动的距离是否大于1f,并且是否可以移动
{
“`Vector3 MoveP = Vector3.ClampMagnitude(hitp – transform.position, 5f);//限制差值
“`transform.LookAt(new Vector3(hitp.x, transform.position.y – 6f, hitp.z));//查看鼠标点击的位置
“`c.SimpleMove(MoveP);//匀速移动到目标位置
}
}
暂无评论内容