1. 程式人生 > >Cocos2D實現RPG遊戲人物地圖行走的跟隨效果

Cocos2D實現RPG遊戲人物地圖行走的跟隨效果

大熊貓豬·侯佩原創或翻譯作品.歡迎轉載,轉載請註明出處.
如果覺得寫的不好請多提意見,如果覺得不錯請多多支援點贊.謝謝! 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;
}

可以看到程式碼很簡單,僅僅是將自身加入被跟隨角色,然後設定自身位置和被跟隨角色位置一致.

好了,短短几行程式碼,我們的跟隨效果就完成了,蠻有意思的,不是嗎? ;)