(NO.00003)iOS遊戲簡單的機器人投射遊戲成形記(五)

來源:互聯網
上載者:User

(NO.00003)iOS遊戲簡單的機器人投射遊戲成形記(五)

上一篇我們建立了機器人物理對象,下面我們來看看對應的邏輯代碼.

進入Xcode,建立Robot和Arm類,分別繼承於CCNode和CCSprite類.代碼全部留空,後面再實現.

我們再看一下這個機器人要如何與玩家互動.當玩家觸碰到機器人手臂並且移動時,以關節為中心旋轉手臂.因為前面在SpriteBuilder中限制了關節轉動的範圍,所以不用擔心關節旋轉到”奇怪”的角度上.

首先在Arm.m的初始化方法中開啟使用者互動:<喎?http://www.bkjia.com/kf/ware/vc/" target="_blank" class="keylink">vcD4NCjxwcmUgY2xhc3M9"brush:java;">self.userInteractionEnabled = YES;

在Arm類中建立執行個體變數_touchPoint:

@implementation Arm{    CGPoint _touchPoint;}

添加觸摸回調方法,首先是touchBegan:

-(void)touchBegan:(CCTouch *)touch withEvent:(CCTouchEvent *)event{    CGPoint location = [[CCDirector sharedDirector] convertTouchToGL:touch];    _touchPoint = location;}

這裡保持第一次觸摸時的位置用來和之後移動時的座標相比較,從而判斷選擇的方向.

然後是touchMoved方法:

-(void)touchMoved:(CCTouch *)touch withEvent:(CCTouchEvent *)event{    CGPoint location = [[CCDirector sharedDirector] convertTouchToGL:touch];    MoveDirection direction = armMoveDirectionDown;    if (location.y > _touchPoint.y) {        direction = armMoveDirectionUp;    }else if(location.y < _touchPoint.y){        direction = armMoveDirectionDown;    }    [self moveArm:direction];}

我們簡單看看這個方法:取得觸摸移動位置,用它和之前儲存的位置相比較,只要判斷y軸的值即可:如果大於之前的y值則表示向上旋轉,否則表示向下旋轉.最後根據旋轉方向旋轉手臂.這裡旋轉方向是一個枚舉值,因為可能在其他類中也會使用,比如後面我們會看到觸摸手臂旋轉的一個大問題,需要改為觸控螢幕幕選擇手臂.我們這裡將其放在一個通用標頭檔裡,建立一個Comm.h標頭檔,內容如下:

#ifndef ShootBall_Comm_h#define ShootBall_Comm_htypedef enum {    armMoveDirectionUp,    armMoveDirectionDown}MoveDirection;#endif

然後在所有需要使用該枚舉定義的類中包含該標頭檔即可.

在下一篇裡,我們將會看到上面代碼中還未介紹的moveArm方法是如何?的 ;)

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.