生活随笔
收集整理的這篇文章主要介紹了
COCOS导航组件
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
@COCOS 導(dǎo)航組件
關(guān)于想在COCOS里面實(shí)現(xiàn)導(dǎo)航功能,可用于敵人追蹤主角或者是坐標(biāo)點(diǎn)自動(dòng)導(dǎo)航;
話不多說(shuō),直接上腳本代碼,腳本文件名為lock
cc
.Class({extends: cc
.Component
,properties
: {speed
:{type
:cc
.Integer
,default:200,tooltip
:"運(yùn)動(dòng)速度"},},walkToDst(dst
){var src
= this.node
.getPosition();console
.log("lock里的SRC"+src
);var dir
= dst
.sub(src
);var len
= dir
.mag();if(len
<=0){return;}this.walkTime
= len
/this.speed
;this.vx
= this.speed
* dir
.x
/len
;this.vy
= this.speed
* dir
.y
/len
;this.isWalking
= true;this.passedTime
= 0;},start () {this.isWalking
= false;this.walkTime
= 0;this.vy
= 0 ;this.vx
= 0 ;this.passedTime
= 0;}, update (dt
) {if(this.isWalking
===false){return;}this.passedTime
+=dt
;if(this.passedTime
>= this.walkTime
){dt
-=(this.passedTime
- this.walkTime
);}this.node
.x
+= this.vx
* dt
;this.node
.y
+= this.vy
* dt
;if(this.passedTime
>= this.walkTime
){this.isWalking
= false;}},
});
其中walkToDst(dst)要求傳入一個(gè)坐標(biāo)參數(shù)dst,speed用于更改其速度。
這個(gè)腳本相當(dāng)于提供了一個(gè)函數(shù)walkToDst(dst)讓它可以自動(dòng)的去追蹤目標(biāo)(哪怕是動(dòng)態(tài)目標(biāo))
以下是一種引用示例,新建一個(gè)腳本,屬性為target,即你要追蹤的目標(biāo),然后通過(guò)拿到導(dǎo)航組件名(“l(fā)ock”)去拿到這個(gè)方法,然后使用這個(gè)函數(shù)就可以導(dǎo)航了。
當(dāng)然應(yīng)該有更好的引用方式,但是我是初次接觸COCOS,所以目前想到的是在update函數(shù)中動(dòng)態(tài)追蹤。
cc
.Class({extends: cc
.Component
,properties
: {target
:{type
:cc
.Node
,default:null,tooltip
:"導(dǎo)航目標(biāo)"},},onLoad () {},start () {},update (dt
) {var src
= this.target
.getPosition();var agent
= this.node
.getComponent("lock");agent
.walkToDst(src
);},
});
注明:使用的時(shí)候一定要把兩個(gè)腳本都掛在一個(gè)節(jié)點(diǎn)上。否則getComponent方法會(huì)拿不到lock腳本(即導(dǎo)航腳本)
總結(jié)
以上是生活随笔為你收集整理的COCOS导航组件的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。