生活随笔
收集整理的這篇文章主要介紹了
COCOS导航组件
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
@COCOS 導航組件
關于想在COCOS里面實現導航功能,可用于敵人追蹤主角或者是坐標點自動導航;
話不多說,直接上腳本代碼,腳本文件名為lock
cc
.Class({extends: cc
.Component
,properties
: {speed
:{type
:cc
.Integer
,default:200,tooltip
:"運動速度"},},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)要求傳入一個坐標參數dst,speed用于更改其速度。
這個腳本相當于提供了一個函數walkToDst(dst)讓它可以自動的去追蹤目標(哪怕是動態目標)
以下是一種引用示例,新建一個腳本,屬性為target,即你要追蹤的目標,然后通過拿到導航組件名(“lock”)去拿到這個方法,然后使用這個函數就可以導航了。
當然應該有更好的引用方式,但是我是初次接觸COCOS,所以目前想到的是在update函數中動態追蹤。
cc
.Class({extends: cc
.Component
,properties
: {target
:{type
:cc
.Node
,default:null,tooltip
:"導航目標"},},onLoad () {},start () {},update (dt
) {var src
= this.target
.getPosition();var agent
= this.node
.getComponent("lock");agent
.walkToDst(src
);},
});
注明:使用的時候一定要把兩個腳本都掛在一個節點上。否則getComponent方法會拿不到lock腳本(即導航腳本)
總結
以上是生活随笔為你收集整理的COCOS导航组件的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。