运行效果
unity通过点击地面进行移动
1、创建项目
2、创建Plane充当地面
3、修改地面的尺寸
4、为地面创建材质
1.创建Materals文件夹
2.右键创建Materal并命名为地面
3.将材质拖给地面Ground
4.修改材质颜色
5.修改贴图
6.修改平铺值
6.修改地面标签
点击地面在Inspector面板点击tag再add标签
最后将Ground的tag选择Ground
5、创建(胶囊体)Capsule充当玩家Player
修改player高度将他提高
创建一个方块充当Player的头
修改方块大小变得更合适一些
重复上述创建素材给他的头变成红色
6、修改摄像头角度
选中MainCamera,并在场景中将其调整合适的角度,使用快捷键ctrl+shift+F修改摄像机角度
7、创建脚本
创建一个Scripts文件夹,并在里面创建player脚本
8、编写脚本
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Player : MonoBehaviour
{
//是否正在移动
private bool isMoving = false;
//移动目标点
private Vector3 targetPosition;
//移动速度
public float speed = 1.2f;
//移动到某处
public void MoveTo(Vector3 pos)
{
targetPosition = pos;
}
//移动 Update
public void MoveUpdate()
{
if (isMoving == false)
{
return;
}
Vector3 pos = transform.position;
//防止高度不一致造成低头等等行为
targetPosition.y = pos.y;
//将处于当前位置的物体匀速移动到
transform.position = Vector3.MoveTowards(pos, targetPosition, speed * Time.
deltaTime);
transform.LookAt(targetPosition);
if (Vector3.Distance(pos, targetPosition) < 0.05f)
{
isMoving = false;
}
}
protected void Update()
{
MoveUpdate();
//鼠标点击左键
if (Input.GetMouseButtonDown(0))
{
//接收左键点击屏幕的射线
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
//射线信息
RaycastHit hit;
//返回点击的射线
Physics.Raycast(ray, out hit);
//开启移动行为
isMoving = true;
//判断点击的物体标签是不是Ground
if (hit.collider.tag == "Ground")
{
//将点击的位置传给MoveTo
MoveTo(hit.point);
}
}
}
}