按路径点移动的js脚本,非常简单(是个人都能懂,属个人独有)

2 replies [最后一篇]
天狼星
User offline. Last seen 15 周 19 小时 ago. Offline
注册用户
Joined: 01/28/2012
Points: 5

1.基本思路:移动的目标(这里用cube)赋予一速度,并赋予Look at,Look at永远指向“真”值点true;目标检测与每个路径点的距离来改变控制参数真假,当到达第一个路径点时,此点值为假,下个点值改变为真。
2.js程序如下(此代码赋予cube,把路径物体拖动到空位上即可):
//wt为要移动的目标。路径点有5个:cf为出发点、d01、d02、d03、d04为各路径点。
var wt:Transform;
var cf:Transform;
var d01:Transform;
var d02:Transform;
var d03:Transform;
var d04:Transform;
var speed=100;

var w02=false;
var w03=false;
var w04=false;

function Update() {
transform.Translate( Vector3(0, 0,speed) * Time.deltaTime) ;

var m01:Vector3;
var m02:Vector3;
var m03:Vector3;
var m04:Vector3;
var m05:Vector3;
var m06:Vector3;

m01=wt.transform.position;
m02=cf.transform.position;
m03=d01.transform.position;
m04=d02.transform.position;
m05=d03.transform.position;
m06=d04.transform.position;

if(Vector3.Distance(m01,m02)<2)
{
w02=true;
w03=false;
w04=false;
if(w02==true)
{transform.LookAt(d01);}
}

if(Vector3.Distance(m01,m03)<2)
{
w02=false;
w03=true;
w04=false;
if(w03==true)
{transform.LookAt(d02);}
}
if(Vector3.Distance(m01,m04)<2)
{
w02=false;
w03=false;
w04=true;
if(w04==true)
{transform.LookAt(d03);}
}
if(Vector3.Distance(m01,m05)<2)
{transform.position=m06;
var w02=false;
var w03=false;
var w04=false;
}
}
如果给各路径点赋予鼠标拖动代码,那么可以随便对路径编辑

邓肯
User offline. Last seen 5 天 3 小时 ago. Offline
注册用户
Joined: 03/03/2012
Points: 5

试了只能走直线,不能按路径走。楼主赐教呀!

天狼星
User offline. Last seen 15 周 19 小时 ago. Offline
注册用户
Joined: 01/28/2012
Points: 5

更新一下哈,其实去掉判断真假语句更简单,只用速度和look at就行,呵呵。注意:距离检测的值不能设太小(相对于物体大小),比如,一个边长30个单位的立方体,对于它的距离检测设为1肯定出错,应设在15左右。我这一个项目,就顺便检测了一下。这是做项目时悟出的方法。俺也是新手,有高手路过的,请不惜赐教。谢谢