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

來源:互聯網
上載者:User

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

為什麼要將手臂移動的代碼單獨放在一個方法中?

其實這裡是多次重構之後的版本.原來的行動程式碼是放在touchMoved方法裡的.後來發現除了觸摸手臂移動方式外,還要實現觸控螢幕幕移動手臂這第二種方式.
所以將其提取出來放在一個方法中,後面還會在Arm類的介面中做聲明.現在我們暫且不管,單單看這個方法:

-(void)moveArm:(MoveDirection)direction{    CCPhysicsBody *physicsBody = self.physicsBody;    CGPoint velocity;    switch (direction) {        case armMoveDirectionUp:            velocity = ccp(0, 10);            break;        case armMoveDirectionDown:            velocity = ccp(0, -10);            break;        default:            break;    }    [physicsBody applyForce:velocity atLocalPoint:ccp(20, 5)];}

代碼比較清晰:首先取得Arm的物理對象,然後根據轉動方向的不同設定對應的力矩;向上旋轉則給力矩y軸一個正量,反之給y軸一個負量.我這裡設定的值為+/-10,這個沒什麼好說的,是多次實驗得出的最佳值.最後將該力矩應用在手臂上.

注意這裡我沒有用以往的applyForce:方法,而是用了類似的另一個方法,算是重載方法吧.該方法多了一個參數,用來設定該力矩具體作用於手臂上哪一個點.如果不這樣做,預設會將力矩作用於手臂的平均點上(具體哪裡本貓也不清楚;),會導致很難旋轉手臂.

注意該參數為ccp(20,5),該手臂大約長20,高10,這個正好位於手臂的中線與手的焦點上.後面發射子彈也是以這個點為參考點,後面會詳述.另外如果要重構的話,如果根據手臂長寬動態計算這個點可能更好點.

編譯運行該App,我們發現當觸摸手臂不放且移動時,手臂會緩緩像移動方向旋轉.這裡有一個加速和減速的效果,手臂從靜止時移動起來較費勁,當轉起來的時候因為有了動能,所以越轉越快.這也是和實際物理物體的運動相符的.

通過不停旋轉手臂,發現一個小問題,是什麼呢?下一篇再揭曉 ;)

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.