NO 00002 iOS遊戲精靈戰爭雛形 九

2021-12-29 21:12:07 字數 891 閱讀 2871

開啟mainscene.m,新增shoot方法:

//子彈速度現在和目標距離相關,越近速度越慢,反之越快.應該修改為恆定速度.

-(void)shoot:(ccnode*)player target:(cgpoint)point

if (abs(velocity.x) > 200 || abs(velocity.y) > 200)

ccnode *bullet = [self loadbullet];

nsassert(bullet, @bullet must not nil);

bullet.position = player.position;

ccphysicsbody *physicsbody = bullet.physicsbody;

[physicsbody applyangularimpulse:10];

[physicsbody applyimpulse:velocity];

}我們詳細說說這個方法.首先該引數傳入2個引數,分別對應發射點和目標點.計算可知子彈力矩為velocity.因為預設力矩太小,力太微弱,我們需要適當放大該力矩.具體應該放大多少應該根據實際app執行效果來定,我這裡覺得50倍比較合適.

在實際子彈發射過程中,可能會出現由於力矩的某條邊角度過小或過大導致子彈速度過快或過慢得現象.我們需要根據實際角度調整力矩的值.我承認這只是權宜之計,如果時間允許這段判斷**需要進一步修改.

然後是上膛子彈到bullet中,這裡做了斷言以防沒有子彈,正常情況下這應該是不可能發生的.

注意loadbullet方法已經將返回的子彈設定為可見了.接下來我們設定子彈的初始位置,取得子彈的物理物件,然後應用指定的力矩.

而應用力矩方法上面還呼叫了另乙個方法applyangularimpulse,這個方法用來使發出的子彈旋轉,增加視覺效果.

NO 00002 iOS遊戲精靈戰爭雛形 一

原本想做乙個複雜點的平面動作遊戲,可以覺得還是有點把握不了.還是先從簡單的原型開始吧.構思中的精靈戰爭 spritewar 是乙個類似fc時代的小遊戲,可以造兵,可以捕獲敵兵.原本還想加上保衛老巢的.但是咱們還是先從最基本的元素開始實現吧.本遊戲雛形要實現的功能大致如下 1.精靈在平面中自由移動到觸...

NO 00002 iOS遊戲精靈戰爭雛形 三

在sprite中新建sprites資料夾,在其中新增player.cc檔案,確保其型別為sprite.將其root節點的ccsprite的精靈幀設定為image sprite 2.png,然後開啟物理物件,調整physics shape型別為circle,同時調整圓半徑以和節點大小相匹配,設定該物理...

NO 00002 iOS遊戲精靈戰爭雛形 十

到目前為止,子彈是有去無回.如果子彈擊中目標或者飛出螢幕,那麼子彈也就沒必要存在了.這裡的不存在不是把它從螢幕中刪除,因為前面提到了子彈快取的作用,所以這裡僅僅將其設定為不可見就可以了.首先處理飛出螢幕的子彈,在mainscene.m中新增update方法如下 void update cctime ...