Cocos2D實現RPG遊戲人物地圖行走的跟隨效果
阿新 • • 發佈:2019-02-01
大熊貓豬·侯佩原創或翻譯作品.歡迎轉載,轉載請註明出處.
如果覺得寫的不好請多提意見,如果覺得不錯請多多支援點贊.謝謝! hopy ;)
在一些RPG遊戲中,人物佇列在地圖中行走的時候有時需要實現一個跟隨效果,比如大家都玩過的FC遊戲<<吞食天地>>.
效果為當佇列只有一個人時,Ta可以自由在地圖中行走,當佇列多於一人時,我們讓其他角色跟隨在遊戲主角之後行走,達到一種”萌萌的”拖尾效果.
如上圖,可以看到遊戲佇列中有4位角色,但我們設定只顯示後2位,當然後面跟著100位也是沒問題的,前提是你想把RPG變成貪吃蛇的節奏 ;)
開啟GameCharacter.h程式碼,在介面中增加2個屬性:
@property (nonatomic,strong) GameCharacter *followedGC;
@property (nonatomic,assign) CGPoint lastTilePos;
接下來開啟GameCharacter.m檔案,將popStepAndAnimate方法修改如下:
//按最短路徑中每一步用動畫的方式移動,使角色沿最短路徑最終到達目的地
-(void)popStepAndAnimate{
//原角色行走程式碼...
_lastTilePos = [_mh tilePosForPosition:self.position];
//原角色動畫程式碼...
if (_followedGC) {
_followedGC.lastTilePos = _lastTilePos;
[_followedGC moveTowardByAStar:[_mh positionForTilePos:_lastTilePos]];
}
}
程式碼功能為設定角色當前位置為上一個位置,然後如果有跟隨的角色,則呼叫其自身的移動方法,目的地為上一個位置.因為上一個位置總和佇列頭部的角色位置相同,所以第一次呼叫後面的角色是不會移動的,這也是我們想要的效果(否則,所有角色都會重疊在一起且同時移動)
最後我們新增一個跟隨方法:
-(void)follow:(GameCharacter*)gc;
其實現如下:
-(void)follow:(GameCharacter *)gc{
gc.followedGC = self;
self.position = gc.position;
}
可以看到程式碼很簡單,僅僅是將自身加入被跟隨角色,然後設定自身位置和被跟隨角色位置一致.
好了,短短几行程式碼,我們的跟隨效果就完成了,蠻有意思的,不是嗎? ;)