unity3D更多资源教程免费下载,群193521697 邀请码:10026.(有问题找管理员)
1.基本思路:移动的目标(这里用cube)赋予一速度,并赋予Look at,Look at永远指向真值点true;目标检测与每个路径点的距离来改变控制参数真假,当到达第一个路径点时,此点值为假,下个点值改变为真。
2.JS程序如下(此代码赋予cube,把路径物体拖动到空位上即可):
001 |
//wt为要移动的目标。路径点有5个:cf为出发点、d01、d02、d03、d04为各路径点。 |
002 |
|
003 |
var wt:Transform; |
004 |
|
005 |
var cf:Transform; |
006 |
|
007 |
var d01:Transform; |
008 |
|
009 |
var d02:Transform; |
010 |
|
011 |
var d03:Transform; |
012 |
|
013 |
var d04:Transform; |
014 |
|
015 |
var speed=100; |
016 |
|
017 |
var w02=false; |
018 |
|
019 |
var w03=false; |
020 |
|
021 |
var w04=false; |
022 |
|
023 |
function Update() { |
024 |
|
025 |
transform.Translate( Vector3(0, 0,speed) * Time.deltaTime) ; |
026 |
|
027 |
var m01:Vector3; |
028 |
|
029 |
var m02:Vector3; |
030 |
|
031 |
var m03:Vector3; |
032 |
|
033 |
var m04:Vector3; |
034 |
|
035 |
var m05:Vector3; |
036 |
|
037 |
var m06:Vector3; |
038 |
|
039 |
m01=wt.transform.position; |
040 |
|
041 |
m02=cf.transform.position; |
042 |
|
043 |
m03=d01.transform.position; |
044 |
|
045 |
m04=d02.transform.position; |
046 |
|
047 |
m05=d03.transform.position; |
048 |
|
049 |
m06=d04.transform.position; |
050 |
|
051 |
if(Vector3.Distance(m01,m02)<2) |
052 |
|
053 |
{ |
054 |
|
055 |
w02=true; |
056 |
|
057 |
w03=false; |
058 |
|
059 |
w04=false; |
060 |
|
061 |
if(w02==true) |
062 |
|
063 |
{transform.LookAt(d01);} |
064 |
|
065 |
} |
066 |
|
067 |
if(Vector3.Distance(m01,m03)<2) |
068 |
|
069 |
{ |
070 |
|
071 |
w02=false; |
072 |
|
073 |
w03=true; |
074 |
|
075 |
w04=false; |
076 |
|
077 |
if(w03==true) |
078 |
|
079 |
{transform.LookAt(d02);} |
080 |
|
081 |
} |
082 |
|
083 |
if(Vector3.Distance(m01,m04)<2) |
084 |
|
085 |
{ |
086 |
|
087 |
w02=false; |
088 |
|
089 |
w03=false; |
090 |
|
091 |
w04=true; |
092 |
|
093 |
if(w04==true) |
094 |
|
095 |
{transform.LookAt(d03);} |
096 |
|
097 |
} |
098 |
|
099 |
if(Vector3.Distance(m01,m05)<2) |
100 |
|
101 |
{transform.position=m06; |
102 |
|
103 |
var w02=false; |
104 |
|
105 |
var w03=false; |
106 |
|
107 |
var w04=false; |
108 |
|
109 |
} |
110 |
|
111 |
} |