欢迎来到狗刨学习网,这里有很多U3D资源、U3D培训视频、U3D常见问题、U3D项目源码,我们致力于打造业内unity3d培训、学习第一品牌
1.首先在场景中新建一个Plane和一个Cube,找两张不同的贴图(方便区分Plane和Cube),并把图片导入到工程中,将贴图分别拖曳至Plane上和Cube上,并将摄像机调到合适的位置。使摄像机俯视Plane。调节好的Game视图如图1-1所示,文章出处【狗刨学习网】:
图1-1
2.新建C#脚本,命名为Pathfinding1,双击脚本进行编辑,代码如下:
using UnityEngine;
using System.Collections;
public class Pathfinding1 : MonoBehaviour {
public GameObject play;
public Vector3 temPos;
public bool isMoving;
public Quaternion rotation;
// Use this for initialization
void Start () {
play = GameObject.Find("Cube");
print(play);
}
// Update is called once per frame
void Update () {
if(Input.GetMouseButtonDown(0))
{
//LayerMask mask = LayerMask.NameToLayer("Ground");
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit hit;
if (Physics.Raycast(ray, out hit, 100))
{
print (hit.collider.name);
if(hit.collider.gameObject.name=="Plane")
{
Debug.Log(hit.point);
temPos = new Vector3(hit.point.x, play.transform.position.y, hit.point.z);
if(Vector3.Distance(play.transform.position,temPos) > 0.1)
{
isMoving = true;
}
}
}
}
if(Vector3.Distance(play.transform.position,temPos) <= 0.1)
{
isMoving = false;
}
if(isMoving)
{
turn(temPos);
this.GetComponent<CharacterController>().SimpleMove((temPos-play.transform.position).normalized*5f);
}
}
void turn(Vector3 look)
{
rotation = Quaternion.LookRotation (temPos-play.transform.position, Vector3.up);
play.transform.rotation = Quaternion.Slerp(play.transform.rotation, rotation,Time.deltaTime*6.0f);
}
}
3.将代码拖曳到创建的Cube上,给Cube添加CharacterController组件,点击播放,即可实现点击地面,物体跟随移动到哪里