纳金网
标题:
unity3鼠标点击移动以及自动寻路(2)
[打印本页]
作者:
paopao
时间:
2014-1-19 16:25
标题:
unity3鼠标点击移动以及自动寻路(2)
我们上节课说道如何取得目标地点的坐标,和让我们的人物转向目标点。今天我们要实现让我们的人物走向目标点,
首先分析一下,我们要实现这个效果非常简单,当旋转完成后判断人物与目标点之间的距离,当距离大于我们设置的最小误差时,使物体朝前运动,当小于和等于最小误差时停止运动。
我们要用到的知识点就是判断两个点之间的距离,这个要用到Vector3
Distance
(
a
:
Vector3
,
b
:
Vector3
) 返回a和b之间的距离
我们只需要的将a换成人物坐标将b换成我们的目标点坐标就OK了
代码如下:
using UnityEngine;
using System.Collections;
public class Pathfinding : MonoBehaviour {
//public Transform from;
public Transform to;
public float speed = 5F;
//游戏主角
private GameObject play;
RaycastHit hit;
//距离差值
float dist;
//角度差值
float angle;
void Start ()
{
play=GameObject.Find("person");
dist=0.5f;
}
// Use this for initialization
void Update ()
{
if(Input.GetMouseButtonDown(0))
{
Ray ray=Camera.main.ScreenPointToRay(Input.mousePosition);
if (Physics.Raycast(ray, out hit, 100))
{
if(hit.collider.gameObject.name=="floor")
{
Debug.Log(hit.point);
to.transform.parent = null;
to.LookAt(hit.point);
//得到玩家至碰撞点的距离差值
dist=Vector3.Distance(play.transform.position, hit.point);
//得到角度差值
angle=Vector3.Angle(play.transform.forward,to.forward);
}
}
}
if(angle<2.0f&&dist>0.5f&&hit.collider.gameObject.name=="floor")
{
//实时得到玩家至碰撞点的距离差值
dist=Vector3.Distance(play.transform.position, hit.point);
to.transform.parent=play.transform;
to.transform.localPosition = new Vector3(0, 0, 0);
move();
}
else
play.transform.rotation = Quaternion.Slerp(play.transform.rotation, to.rotation, speed);
//实时得到角度差值
angle=Vector3.Angle(play.transform.forward,to.forward);
//play.transform.position = Vector3.Lerp(play.transform.position, hit.point, Time.time);
}
void move()
{
//玩家向前移动
play.transform.Translate(Vector3.forward * Time.deltaTime);
}
}
将代码附加到我们的主相机上,运行游戏。效果还不错吧。这样就实现了一个简单的鼠标自动寻路功能。
作者:
libufan
时间:
2014-1-19 19:37
谢谢整理
作者:
wusky751023
时间:
2014-1-19 23:49
希望我也可以評分啊!!!!
這篇超級無敵實用啊!!!!
做線上遊戲會更方便!!!!!
讚啦!!!!
作者:
thebat
时间:
2014-1-20 01:01
真是很方便啊,太感谢了
作者:
huhumark
时间:
2014-1-21 19:55
不错的教程谢谢
作者:
相思赋予谁
时间:
2014-1-27 21:43
libufan 发表于 2014-1-19 19:37
谢谢整理
还不错哦哈哈。
作者:
pz789as
时间:
2014-2-7 15:46
看看后面怎么做
欢迎光临 纳金网 (http://go.narkii.com/club/)
Powered by Discuz! X2.5