リンク
とp

2012年08月26日

そのよんFour、iPhoneアプリ開発中、cocos2d,バグ、エラー、事例対応検討履歴、目指せー副業収入:月5万円以上、簡単にいきそうで上手くいかないアイフォンアプリ開発ですが徐々にコツがわかってきました。2012年8月20日から8月24日

そのよんFour、iPhoneアプリ開発中、cocos2d,バグ、エラー、事例対応検討履歴、目指せー副業収入:月5万円以上、簡単にいきそうで上手くいかないアイフォンアプリ開発ですが徐々にコツがわかってきました。2012年8月20日から8月24日

今回は、スプライト画像を数枚の画像を切り替わりつつ、A点からB点の2点間移動を設定しようとしました。
そして、一時停止だるポーズPauseを入れようとしました。
そのときのバグとエラーの対応について、検討、改善、調査した履歴です。
一部、または全部改善されていないところもあります。

<現在の状況動画7>
ゲームオーバーで再度ゲームを開始するバージョン

<現在の状況動画8進行中のもの>
1面クリアで2面に移動するバージョン、進行中。

ひよこさんをタップすると得点になります。ひよこさんがワニさんに食べられるとミスです。

<バグ、エラー、事例>
1.runActionが動かない CCAnimation等を利用した場合
  A. 記載する箇所、プログラム行を確認しましょう。
2.PauseはNSTImerがとまらない
  A. NSTimerを止めるときは、invalidateを使いましょう。
NSTimer *tm
とした場合、NSTImerを止めるときは
[tm invalidate]
 でも、cocosのschedule:@selector(test:) interval:1.0fなどを活用すれば、そんなことはなかった?(未検討。)

3.ccTouchEndedが反応していない(前回のバージョンまで問題なく動作していたのに)
 A. スペルミスに気をつけましょう。コンパイルエラーが表示されなくて、実行してもエラーにならないことがあります。

4.XCODEでプロジェクト作成のindexingが延々と作業している状態を止めたい場合
  XCODEでプロジェクトを作成すると、自動でインデックスを作成します。しかし、この処理がMacBookPro(Core i7)であっても数分かかり、処理が重たい。ATOK2012日本語変換が遅いくらいです。
  しかも、どこかで失敗すると、何度も何度もインデックス作業を続けてしまいます。
 当初は100ファイル程度が、600ファイルにまで増えてしまいました。徐々に増えて増殖中。Gぶりの様です。(嫌だ怖い。おじちゃんでも嫌。)
しびれを切らして、どうやって、XCODEのindexingを止めれば良いのか調べてみると
次へ続きます。
xcodeで補完がバグった時の対処法にありました。要点のみ記載すると
オーガナイザを開き、プロジェクトタブを選択し、Derived Dataを削除するそうです。
しかし、実行してもいっこうに、インデックスが止まる気配がありません。

そこで、一旦XCODEを終了して、
再度、起動して、(1)を 試しました。
また、一旦XCODEを終了して、
再度、起動すると、インデックスの作成は止まりました。
そして、補完機能も正常です。

次回からプロジェクトの作成は、storyboadのチェックを無しにしてやってみます。



以下、詳細に記載します。

1.runActionが動かない
アクションの設定[CCAnimate action...や[sprite runAction:...]を(void)updateに設定しましたが動かず、コンパイルエラーはないのですが、実行してエラー。
そこで、
 アクションの設定[CCAnimate action...や[sprite runAction:...]を(id)initに設定したところ、動作しました。
<画像111>
画像111.png


runActionの記載設定位置が悪かったようです。
 また、CCAnimationをスプライト毎に配列に入れてましたが、やめました。理由は、正常に動作しなくて、フレームレートが再生するたびに低くなって、60、30、20、10フレームとカクカクになってしまいました。
いくつも追加されているようでした。

アクションとスプライトが対になるので、同一のアクションがスプライト毎に複数個必要とならないようです。
なお、個別にアニメーションをしたい場合は、複数個のアクションが必要となるのかもしれません。


2.PauseはNSTimerがとまらない(schedule:@selector(test:) interval:1.0fを使えばいいんではないですか?)
コーディングのはじめはNSTimerを使って、 [CCDirecter ..]pause]を使用しました。
アニメーション等の動きは止まりましたが、NSTimerは動いていました。
正確には、プログラム自体は動作しているので、タイマーを止めたければ、他の処理を入れて止めなさい、ということでしょうか。
NSTimer *tm
について
[tm invalidate]
として、止まりました。Resumeについて、正常に動き始めます。これでいいらしい。
そもそも、NSTimerをつかわずに、schedule:@selector(test:) interval:1.0f
を使えばよいらしい。
-(void)test:(ccTime)dt{count++://etc.}
そうすれば、 pauseで止まるかもしれない。(未対応です。現時点8月25日)

3.ccTouchEndedが反応していない(結論は、スペルミスです。)
上記の1,2の他、シーンを追加した後、タッチイベントが反応しません。CCAnimaも動作しました。
 replacesceneシーンを追加してシーンの切り替えも期待した動きではありませんがほぼOK。
いままで、ccTouchEndedは反応していました。ひよこさんをタッチできていました。
 ここで、整理します。
(1)症状
 ccTouchBegan,ccTouchEndedを設定しました。iPhoneアプリをシミュレータにて実行し、タッチをするもccTouchBeganは、正常に反応します。
 しかし、ccTouchEndedは、タップしても反応せず、ブレークポイントを入れてもその場所を全く通過していません。
そのため、デバッグとれーすできず。

(2)その前の動作
CCTouchBeganは、記述してあるが、return YESのみ記載。
ccTouchEndedは正常に動作していた。ひよこをタップできていた。問題なく、動作OK。

(3)直前に記載追加したコードや内容
replacescene用シーンクラスを追加、ccTouchBeganに座標判定用のIF文を追加、CCAnime等を追加。

(4)検討、推測、調査
  1.前バージョンのプロジェクトコードを利用して、ccTouchBegan,ccTouchEndedの動作を確認する
  2.CCAnime等のコードを記述して動作を確認する。
  3.シーンクラスを追加して動作を確認する。replacesceneが悪さをしている可能性有り

(5)原因
  (4)の結果をまとめます。
 <1.前バージョンで動作の確認ができた場合>
 前バージョンで動作が可能で、現バージョンで動作不良の場合、現バージョンのコード記載が間違っていることになる。
 関数メソッドの記載順、コードの記載順を再確認してみる。
 どうしても原因がわからない場合は、前バージョンを、もとに改めてプロジェクトを作成してコードの入力をしなおしてみる。
 <実施状況>
 1.前バージョンのプロジェクトコードを利用して、ccTouchBegan,ccTouchEndedの動作を確認しました。
 2.CCAnime等のコードを記述して動作を確認しました。
 前バージョンで正常に動作します。
 次に 3.については、現バージョンの追加したシーンクラスを削除します。
 これで、現バージョンが正常に動作すれば、追加したシーンクラスが原因でタッチのイベントが正常に動作しないことがわかります。
 コメントにしましたが変化ありませんでした。
 原因がわかりました。
 

ccTouchEndedの誤記

でした。これが原因で、タッチのイベント取得できていませんでした。
ccTouchEndedを

ccTouchesEnded(誤記)

にしていたミスです。
コンパイルエラーも表示されていないことからそのまま、何も気にせずに使っていました。
ふとよく見ると、Touchではなくて、Touch*es*になっていました。
きちんとccTouchEndedにして、確認できました。
 追加したシーンクラスの影響ではありませんでした。
 なんともスペルミスとは。
熱中していると、他のことが見えませんね。

 <2.前バージョンでも同様の結果の場合>
 ccTouchBeganは、タッチ反応するので、ccTouchBeganにccTouchEndedに記載された内容を移してみる。
 また、ccTouchEndedは、これまで動作していたのだから、ccTouchBeganを削除してみる。
>>前バージョンでは正常に動作しましたので、この調査は打ち切ります。


(6)対策、回避策、別案
 対策は、

ccTouchesEnded(誤記)

を正常な、「ccTouchEnded」として記載しました。

(7)結論、今後の対応
 今後の教訓:
 動かないときは、ログを出力して、一旦、前のバージョンで確認し、その後、現バージョンを確認しましょう。
 そして、コンパイルエラーが表示されなくても、スペルミス、変数、メソッド関数、クラス名の誤記がないかを確認しましょう。


 
次は、ポーズの設定、別のシーン、2面、3面への切り替えです。
pauseポーズの設定は、簡単にcocos2dに用意されている pauseを使用しました。
方法は、
画面のある領域かポーズ用のボタンをタップするとポーズとなるようにします。
ここで、問題がありました。
標準のpauseでは、画面をタップできることです。当然ながらresumeする必要があるので、タップできなければなりません。
しかし、タップできるスプライト画像が、resumeのみのスプライト画像ならよいのですが、他のスプライト画像もタップできます。当然です。

つまり、ポーズにしたとき、Resumeボタンのみを押せると思っていると、画面の制止しているスプライト画像をタップできてしまいます。
ポーズと言うことなので、画面上のどこを触っても変化しないはず。これを期待したのですが、違ったようです。

そこで、pause用のフラグ変数を別途用意しました。
この値が0ならば、スプライト画像がタップできます。
この値が1ならば、スプライト画像の処理を無視するように条件判定を入れました。
また、NSTimerについては、resumeをしても再起動しませんので、再度NSTimerを設定しました。
<画像211>

もっとかっこよくスマートな方法は、
レッスンノートのように、一部のアニメーションを動作させながら、ポーズはもう少し勉強してからにします。

他にも
playsnackgames.com - Making delicious games. このサイトが参考になりそうです。
ポーズの問題は、単にシーンが切り替わるだけではなくて、アニメーションやタップの処理をある程度限定して、止めなければなりません。
そして、再開させる必要があることです。
意外にこれが難しいですね。
単に、ループで別の処理に移動させれば良いのでしょうか。



次に、シーンの切り替わりというかゲームの2面、3面への切り替えとゲームの進行を進めます。
ある一定数のひよこを救出できたら、次の面に移動します。
できれば、2面、3面と、他のシーンに切り替わることがわかるように、バックグラウンド画像を変更するか、面数をどこかに表示させたいと思います。
<画像212>

たとえば、
A.2匹助けます。
B.成功表示シーンに代えて、「1ミッション成功です。クリアしました。」
C.次の2面シーンに変わります。
D.2匹助けます。
E.成功表示シーンに代えて、「2ミッション成功です。クリアしました。」
F.次の3面シーンに変わります。
G.また、2匹助けます。
H.成功表示シーンに代えて、「ゲームクリア。おめでとう。」、1メニュ「Regame」、2メニュ「(他)」
I.(H)のメニューで分岐
 となるようにしてみます。


<<今後の予定>>
次の作業は次のようにしてみようかと思っています。
これくらいあれば、ゲームとしての機能が一通りそろったのではないでしょうか。

8ランキング表示、
9 サウンド作成、設定
11 ボーナスアイテムの出現
12 ボーナスアイテムの取得による各種変更、

以上

画像1/35 ガンヘッドコトブキヤ [KP190 ガンヘッド]


画像【新品】プラモデル プラモデル 1/144 RG RX178 ガンダムMk-II(エゥーゴ仕様) 「機動戦士Zガンダム」RG第7弾RX-78のガンダムの正統後継機登場RX-178 ガンダムMk-IIです。新規アドヴァンストMSジョイントを採用したムーバブル・フレームの可動性の自由度の高さ
posted by goodman at 20:23| Comment(0) | アイフォンiPhoneアプリ開発 | このブログの読者になる | 更新情報をチェックする

2012年08月21日

ゲームプレー動画デッドオアアライブ5 こころミニスカ着物コスチューム、かすみコンバットコスチューム対戦

ゲームプレー動画デッドオアアライブ5 こころミニスカ着物コスチューム、かすみコンバットコスチューム対戦
Kokoro vs. Kasumi on The Ends of the Earth - Dead of Alive 5 Gameplay
こころは八極拳だったかな。
着物裾が短くて良いと思いましたが、思ったほどセクシーでもありませんね。
着物の裾を長くしてひらひら、ちらちらのほうが、まだセクシーなのかも。



着物、洋服、帯、ひも、髪などの細かい小物についての物理演算が非常に違和感なくなっています。


画像METAL BOX MB合金 MBG-02 UFOロボ グレンダイザー「グレンダイザー」が登場!各関節の可動・新規造形のオプションパーツ・発光ギミックなど、キット版をベースに合金トイ


画像【夏休み特別企画セール】トランスフォーマーDA-13 スカイハンマーディセプティコンの新キャラクター、スカイハンマーの変形フィギュア。戦闘ヘリコプターからロボットに変形。新作映画に合わせて、完全新規設計

画像BRAVE合金32 機動戦艦ナデシコ エステバリス 0G戦フレームアキト機&アマノ機 「エステバリス 0G戦フレ−ム アキト機&アマノ機」。イミディエットナイフとラピッドライフルが付属し槍型武器のフィールドランサーを追加しました。胴体のアサルトピットは分離し移動形態へ変形します。ピットはアキト機とアマノ機で換装ができます。そして陸戦&空戦とも換装が可能です。
posted by goodman at 11:26| Comment(0) | 静止画ムービー | このブログの読者になる | 更新情報をチェックする

2012年08月20日

エクセルにて、マクロを使ったセルを、他のシートにコピペ(コピーペースト)したら、#REF!がコピペされたときは、形式を選択して貼り付けで、数式を除外する

エクセルにて、マクロを使ったセルを、他のシートにコピペ(コピーペースト)したら、#REF!がコピペされたときは、形式を選択して貼り付けで、数式を除外する

マクロを設定したセルに表示された情報を、他のシートにコピペしようとしました。
すると
例 #REF! が出現、表示されました。
せっかく、マクロを使って整理したセルなのに。
この場合の対処は、

コピーした後に、ペーストするシートにて、右マウスクリックで、「形式を選択して貼り付け」を選ぶと良いでしょう。

そのときに、表示されるダイアログで、数式のチェックを外します。
数式がペースとされると、シートが異なるために、数式マクロが正常に動作できず、#REF!となります。

他のテキストチェックボックスはチェックがあって良いです。


昔、覚えていたことでも使わないと忘れっぽくなります。
ちなみに、MacのMountainLionのOpenOfficeでも有効でした。


posted by goodman at 12:04| Comment(0) | メモ テクニック | このブログの読者になる | 更新情報をチェックする

2012年08月19日

その3、 iphoneアプリ開発、 2012年8月12日から8月19日までの作業内容,アイフォンアプリ開発のエラーのときの対応記録、履歴、メモNSTimerのときの注意点、動かないとき

その3、 iphoneアプリ開発、 2012年8月12日から8月19日までの作業内容


■アイフォンアプリ開発のエラーのときの対応記録、履歴、メモ

テンプレートで作成するときにレティナ対応にしない場合
は、コメントにします。
120818-0001_retina.png

1.NSTimerのときの注意点、動かないとき
2.cocos2dココス2DのCCSpriteFrameとCCAnimationは、正しく設定しないと、描画速度の低下を招く。



・エラー、バグの経緯
iPhoneアプリをiPhone実機で確認中に色々とバグが出ました。




エラー1
一つは時間制限60秒としたときに、60秒経過すると画面が固まってしまいました。
 なにをしたいのかというと、
60秒を経過すると、別のシーン(Bシーン)に切り替わり、別のシーン(Bシーン)からゲームシーン(Aシーン)に戻ります。
そして、また、60秒を経過すると
別のシーン(Bシーン)に切り替わりというものです。つまり、A,B,A,B、、、を繰り返します。


画像




 時間制限において、判定のための閾値をある値よりも上であれば処理をするというようにしていました。


この点についてタイマーによって、加算しています。
 判定を><にて設定しています。これが原因でした。
if(a>60)
イコール=判定if(a==60+1)によって何度も読み込みが発生していたのが防げる事となって改善されたようです。
つまり、><にて設定していたので、制限時間の値を越えるとなんども同じ処理を繰り返していたのが原因でした。
 プログラムを組んだときは、シーンが切り替われば、条件判定は無視されると思いました。
 しかし、NSTImerが正しく設定されていないこともあって、何度も条件判定が実行されることとなり、期待した動きになりませんでした。



また、タイマーについてはタイマーが正常に停止,
終了してなかったようでしたのでタイマー部分についてinvalidateを入れるようにしました。
ここで、現在のバージョンではXcode 4.4はreleaseリリースを入れるとクラッシュします。


時間制限については時間制限を越えると他のシーンを読み込います。ここで、他のシーンを読むときに何度も何度も連続して呼び込むために画面の整理が行われなかったようです。この点についてはタイマーの設定が介護増すごとに同じタイマーが働きつつ動くのでタイマーのカウントについても原因がありました。

120819-0001_NSTimer_invalidate.png


つまり、5回シーンを切り替えると、5回分のタイマーが動作して、時間が5倍速(たぶん)になります。
そのため、カウントダウンを表示させていると5倍速で、時間表示がカウントダウンします。
本来の期待した動きは、1秒ごとに数字が1つ減っていきます。






エラー2


2つめは、ゲームで遊んでいるとフレーム数がゲーム中に徐々に低下しました。はじめは60フレーム、30フレーム、10フレームとなり、徐々にかくかくな動きとなりました。




次にスプライトアニメつまり、cocos2dココス2DのCCSpriteFrameとCCAnimationを使っていた部分をコメントにしました。
現在、

CCSpriteFrameとCCAnimationを使っていた部分はそのまま保留となっています。

コメントにしてあります。
120819-0002_now_comment_CCAnime.png


現在検討中です。




posted by goodman at 17:45| Comment(0) | アイフォンiPhoneアプリ開発 | このブログの読者になる | 更新情報をチェックする

2012年08月12日

その2、cocos2Dココス iphoneアプリ開発日誌、簡単なところからプログラムをはじめよう、葉月、2012年8月5日から8月11日までの作業内容

その2、cocos2Dココス iphoneアプリ開発日誌、簡単なところからプログラムをはじめよう、葉月、2012年8月5日から8月11日までの作業内容

<開発項目リスト目標>



1、画像の移動アニメーション
2 タップによる画像の消去または画像の変更
3 複数スプライト設定(六匹ほどランダム表示)
前回はここまで終わりました。

今回はここからです。ここら辺で、一旦別のプロジェクトかターゲットにして、再度コードを入力し直して余分なところを整理します。
 

今回はここからです。
4 score設定、タップでポイントアップ加算


参考にしたサイトです。

http://www.hideblog.net/nikkis/show/304/
ひでぶろぐ。 cocos2d アニメーション繰り返し

http://blog.9wick.com/2011/10/cocos2d-ccsprite/
Cocos2dでCCSpriteの画像を切り替える方法 | エンジニア開発記

http://libro.tuyano.com/index3?id=548004&page=3
プログラムの構造化 〜関数と構造体〜(3/4):Objective-C初心者のためのC言語超入門

http://c-production.com/contents/c/sec11.html#13
C言語入門 11.構造体

http://cocoadays.blogspot.jp/2010/08/nstimer-blocks.html
Cocoaの日々: NSTimer を Blocks で処理する

http://cocoa.synck.jp/1237172145.html
ストップウォッチを作ろう(3) - Cocoaプログラミング


http://solitary-air.blogspot.jp/2009/08/nstimer.html

http://libro.tuyano.com/index3?id=562002&page=2

http://blogs.yahoo.co.jp/ino_do/31093427.html




4 score設定、タップでポイントアップ加算、


 タップで、消せたら、ポイントを表示して加算します。
 まず、作成手順をリストにしました。
 1.タップして、消えるときに、ポイントを加算します。
 2.スコアーとして表示します。
 3.連続タップできるとボーナス加算をします。判定用変数、加算カウンター変数を用意します。
   変数がTRUEなら、加算カウンター変数をカウントアップして、ボーナス点を加算します。ミスを犯したら、初回の変数をFALSEにします。
 FALSEになるとボーナス加算しません。カウンターをリセットします。スコアはそのまま。
 
スコアのラベルです。
120812-0001.png


あまり進みませんでした。
進まなかった理由としては、ワニさんに食べられるときに、他のアクションを設定したかったのです。
CCRatateなど試したのですが、期待した動きになりません。


が、個別の変数とその判定処理が必要となります。
いまは、NSMutableArrayでCCSrite管理をしています。
個別の特有の状態を示す変数は管理していません。
個別の変数の管理をするには、構造体かひよこさんクラスを作成する必要があります。
別のクラスを作成して、確認しようとすると、時間がかかりそうなので、次回にしました。
スプライト画像のアクション設定
120812-0002.png

スプライト画像設定
120812-0003.png

右側の領域に入ると消えます
120812-0004.png

タッチイベント
120812-0005.png

 

10 制限時間の設定、


予定ではもっと先の予定だったのですが、簡単にできるだろうと思って作業に取りかかったらはまりました。
日付の秒から計算すれば良いのかと思ったら、日付を文字列の変換が面倒だったりとObjective-Cの文法が面倒だったので、NSTimerの方が便利だったので、タイマーにしました。
しかし、1秒ごとに表示する設定のはずが、1秒ごとに表示されていません。
あるときは、一気にカウントされてます。
これだと時間の表示なりません。
描画処理に手間取っているのでしょうか?
他の手段を検討します。

また、バグが見つかりました。6回ほど、ゲームが繰り返されると、シーンがゲームオーバーの画面になったまま、ゲーム画面に戻らなくなって、そのままになります。
画面が固まったままではなくて、シーンが切り替わらずにそのままになっているようです。
ここら辺もデバッグする必要があります。

5 ミスをした時の残機減少


7 ゲームタイトル、ゲームオーバー、リプレイ画面の設定


とりあえず、ゲームオーバーを設定しました。
規定の数のミスをすると、ゲームオーバー、リトライの表示をします。
ゲームタイトルは、後日にします。


次回は、

6 複数面、シーンの設定


 1面をクリアしたときの次の面に移動できるようにします。





次の作業です。

8ランキング表示、
9 サウンド作成、設定
11 ボーナスアイテムの出現
12 ボーナスアイテムの取得による各種変更、

では、次回です。
posted by goodman at 15:10| Comment(0) | アイフォンiPhoneアプリ開発 | このブログの読者になる | 更新情報をチェックする

2012年08月10日

ストップモーションキャプチャの映画のメイキングParaNorman 見た

ストップモーションキャプチャの映画のメイキングParaNorman 見た

ParaNorman

ウォレスとグルミットのアードマンが制作しているのかと思ったら違いました。
ストップモーションキャプチャの映画って、手間がかかると思いますが、実際のところ、CGと制作費は変わらないのでしょうか?
3DCGでも、キャラクターの模型を作ってそれをモデリングしてアニメーションして、編集して映画になります。
ストップモーションアニメも模型を作って、動かして、編集して映画になります。
映画の設定が、広大な宇宙とか、光線がでたりとか、変形したりとかしなければ、ストップモーションアニメでも制作期間とか、制作費は同じくらいなのでしょうか。

ノーマンのメイキングを見ると、
こんだけ、手間がかかっているのかとびっくりします。




かなり手間がかかっています。
こんなに手間がかかっているとは。撮影をしている人は気が狂いそうにならないのか不思議です。
パペット人形の制作に従事している女性の数が多いように見て取れるのは、女性の方が、やっぱり、地道な作業に向いているからでしょうか。

話は変わって、
今作っているアイフォンアプリのアニメーション、アクションの設定で悩んでいます。

A点からB点に移動して、その後別のアクションをします。そして、また、A点から、、、とリピートします。
このリピートの間に、タップされると、他のアクション、アニメーションに切り替えたいと考えています。
たったこれだけのことなのに、上手くいきません。
一つのオブジェクトをタップして、このタップしたものに関して他のアクションを追加したいのに、タップしていないオブジェクトも一緒に他のアクションアニメーションをし始めます。

手間がかかる方法をとらないとならないようです。
面倒だと思っていました。

そして、ストップモーションアニメのメイキングを見たら、今作っているアクション、アニメーション設定なんて、苦にならない範囲です。


画像[かき氷シロップ]かき氷の氷蜜とハンディーシャワーのセット
かき氷やフラッペでは、氷の上に多種多様の蜜やフルーツを盛り合わせるレシピが存在します。中でもスタンダードな組み合わせとして。「かき氷の蜜(シロップ)」と「氷」という組み合わせがシンプルで一番おいしいです。

画像クリアリーズ メープルシロップNo.1 ライト 250ml
メープルシロップの中で最高級のグレードのものです。「一番絞り」に相当する新鮮な樹液を使ったもので、あっさりまろやかな味は絶品!!250ml(瓶) 原産国:カナダ

画像【38%OFF送料込】小麦胚芽入りパンケーキミックスとカナダ直輸入ラクレーメープルシロップの2000円ポッキリすっきりコラボセット女性にうれしい小麦胚芽入りパンケーキミックス(約21枚分)に、カナダ・ケベックから直輸入したばかりのメープルシロップ125mlがついて、更に沖縄・離島以外の地域への送料込で、2,000円ポッキリ!
posted by goodman at 10:47| Comment(0) | 映画の感想 | このブログの読者になる | 更新情報をチェックする

2012年08月05日

その1、cocos2Dココス iphoneアプリ開発日誌、簡単なところからプログラムをはじめよう、葉月、2012年8月2日から5日までの分

その1、cocos2Dココス iphoneアプリ開発日誌、簡単なところからプログラムをはじめよう、葉月、2012年8月2日から5日までの分

前回レッスンノートをもとにcocos2Dココスバージョン1.0からバージョン2.0への移植と誤植を修正しながらiphoneアプリ開発をしようと途中まで頑張りましたが挫折しました。
コメントしてくださったり、アドバイスの書き込みありがとうございました。もうちょっとやってみましたが、ダメでした。

Ver2.0のテンプレートからソースコードをコピペしてVer2.0に移植しながらアプリを作ってみようと思いましたが、動くか動かないかで悩んで、飽きてしまいそうなので、もっと自分に合った簡単なコードからアイフォンアプリゲームを作ってみようと思います。


でもレッスンノートは参考書として活用していきたいと思います。クラスのデザインコーディングは非常に参考になりました。たぶん、再利用とか複数人数での開発には必要なデザインだと思います。でも私は一人なので、あまり再利用を考えてもそのための設計を考えるだけで時間が経過してしまって何も進まないことがおおいので、とりあえずは、どんどんコーディングをしてうごかして、アイフォンアプリのゲーム開発を進めてみたいと思います。


今回は、もっとシンプルで簡単なiphoneアプリ開発はします。 youtubeの動画のコーディングチュートリアルを参考にしながら、 iphoneアプリを開発しようと思います。ユーチューブが見ることができる時代になってほんとに良かったです。

まず簡単アイフォンアプリゲームの開発項目を考えてみました。
まず、スプライト画像がアニメーションして、ユーザがタップして何かの変化、イベントが発生するところまでを作ってみます。
難しいところや細かい装飾性に伴うアニメーション(エフェクトとかディゾルブとか爆発とかポイントアップとか)は、余力があったときや何か書籍に記載されているのを発見したら入れてみます。



<開発項目リスト目標>



1、画像の移動アニメーション
2 タップによる画像の消去または画像の変更
3 複数スプライト設定(六匹ほどランダム表示)
4 score設定、タップでポイントアップ加算
5 ミスをした時の残機減少
6 複数面、シーンの設定
7 ゲームタイトル、ゲームオーバー、リプレイ画面の設定
8ランキング表示、
9 サウンド作成、設定
10 時間制限設定、カウントダウン、
11 ボーナスアイテムの出現
12 ボーナスアイテムの取得による各種変更、
13 ゲーム開発用確認デバッグのための開発
14その他



いまのところ、一人で開発なので、シンプルでわかりにくいけど、とりあえず動くアプリゲームが目標です。
そのため、グローバル変数のような変数だらけで、極端に長いコードとなるでしょう。
それでもまず、動かしつつ理解しつつアプリを作り上げていくことを第一にします。
動かせないとさっぱりおもしろくもありません。理解も進みません。という解釈で進めていきます。

クラスを複数に分けたり、総合的に管理したり、効率よくアプリを作成するのは二の次にします。
たぶん、統合的で効率の良い方法を覚えているところから、他のことを忘れていって、アプリすら作らなくなるから。
この開発日誌は、アプリ開発が飽きて1年後に、また作りたくなったときに、この日誌を見ると思い出すことを目的にしています。



<進捗状況>

1、画像の移動アニメーション


複数のスプライトにて、左から右へ、下から上へのループアニメーションを設定しました。
A点からB点への単純移動アニメーションです。

 構成は、単に、xかy座標の数値をカウントアップして、ある一定の値に達したら、元の位置にします。
 スプライト画像のposition.xに100*dtを加算します。これは、1秒間に100ピクセル動くというものです。
つまり、現在のx座業が10の位置にあると、アプリを実行させて、1秒後に110ピクセルの位置に移動します。
2秒後には、210ピクセルの位置に移動します。シンプルですね。
 でもこのままでは、画面から消えてしまいます。でもプログラムのメモリにはずっと残ってアプリが起動している間はずっとピクセル加算されて移動したままです。
 それでは困るのは、ある値を超えたら、ここでは画面サイズ480ピクセルを越えたところで、新しい座標を与えて、画面に表示させるようにします。
メソッドの記述
120804-0001.png

他のメソッドの記述
120804-0002.png

 

2: タップによる画像の消去または画像の変更


レッスンノートに記載のonEnter,onExit,ccTouch関連関数を、記述すると、1で動いていたアニメーションが動かない現象が発生。スプライト画像は表示されているのにアニメーションとして動きません。

グーグルでいろいろと調べて、あきらめかけたときに、あるサイトで
[super onEnter];
[super onExit];
の記述をみつけました。
そこで、この記述を試してみました。動きました。
レッスンノートには記載されていませんでしたが、インプレスジャパンのココス本には、
[super onEnter];
[super onExit];
が記載されていないと正常に動作しない恐れがあると記載されていました。


複数の記載を参考にしながら進めていきます。
まずは、スプライトをタップすると、画面から消すようにします。
その後、他の画像にスプライトを変更できるか、試してみます。
 スプライトをタップしたら、他の画像にしました。うまくいきました。
120804-0003.png


次に、スプライトを消します。これは、spriteをnilにするだけでは消えません。
そこで、
removeFromParentAndCleanup:YES
を設定します。
これで、画面上に表示されなくなります。




3: 複数スプライト設定(六匹ほどランダム表示)




120805-0001.png


cocos2dの使い方【実践】A 〜スプライトで簡単なゲーム 1/2〜Add Starこの記事を参考にさせてもらいました。(報告書き込み未だです。8月4日現在)

次は、6匹というか複数スプライト画像を表示させて、タップすると消えるようにします。
できれば、表示、タップして消して、再度表示して、ループして、表示、消すができるように
したいと思います。

ここで、ちょっと画像を作成しておきましょう。著作権違反にならないように、自作しましょう。Pixelmatorを買いました。
本当はフォトショップが欲しかったのですが、画像作成に6万円も払えません。
でもフォトショップエレメントは1万円くらいなので買ってもいいかなと思ってます。

 まず、作成手順をリストにしてみます。
 1.スプライトを設定して複数のスプライト画像を表示させる
 2.複数のスプライトをそれぞれ個別にランダムにアニーションさせる。
 3.タップすると消える。全部消すと、また、出現する。
 4.2、3を繰り返すゲーム。

 関連するリンク
cocos2d for iPhone v0.99.0-final Release Notes
runAction:[CCRepeatForever について、スクロールの半ばくらいなので、ページ内検索した方がよいです。


ここまでの動作の動きです。音楽は、ユーチューブで編集しました。


★1は、タップすると、別の画像になって、回転します。
★2は、画面から消します。
他は、画面から別の座標へ飛ばしてます。メモリ上は削除してない状態です。
動画キャプチャのフレームレートは8フレームです。アプリの方は60フレームです。

いろいろと、パラメータとなる値をいじったり、スプライト画像を加えたり消したりしているので、当初の説明と変わっているところがあります。





次回はここからです。

4 score設定、タップでポイントアップ加算


 タップで、消せたら、ポイントを表示して加算します。
 まず、作成手順をリストにしました。
 1.タップして、消えるときに、ポイントを加算します。
 2.スコアーとして表示します。
 3.連続タップできるとボーナス加算をします。


5 ミスをした時の残機減少


 ゲームとして、ユーザの制限とペナルティを考えます。

6 複数面、シーンの設定


 1面をクリアしたときの次の面に移動できるようにします。


7 ゲームタイトル、ゲームオーバー、リプレイ画面の設定


 
posted by goodman at 19:24| Comment(0) | アイフォンiPhoneアプリ開発 | このブログの読者になる | 更新情報をチェックする

2012年08月04日

アイフォンアプリ開発メモココスcocos2d ver2.0メモ 画面の向き,物理シミューレションをするならBox2D

アイフォンアプリ開発メモココスcocos2d ver2.0メモ 画面の向き,物理シミューレションをするならBox2D
 

【cocos2d】画面の向きを変更する | LAGRANGE BLOG | iPhoneアプリ,iPhone,Androidゲーム攻略掲載web

たとえば
縦向きでアイフォンアプリを作りたいときは

//縦向き
メソッド
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
について
return ( UIInterfaceOrientationIsPortrait( interfaceOrientation ) );
とします。
LandscapeとPortraitです。



・物理士ミューレションをするならBox2D
Intro to Box2D with Cocos2D Tutorial: Bouncing Balls | Ray Wenderlich


How To Create A Breakout Game with Box2D and Cocos2D Tutorial: Part 1 | Ray Wenderlich
posted by goodman at 11:24| Comment(0) | アイフォンiPhoneアプリ開発 | このブログの読者になる | 更新情報をチェックする

2012年08月01日

その6一旦休止 書籍cocos2d for iPhone レッスンノート (加藤寛人、佐藤伸吾著) の誤植の修正とcocos2d v1.0からv2.0への移行の道のり、

その6 書籍cocos2d for iPhone レッスンノート (加藤寛人、佐藤伸吾著) の誤植の修正とcocos2d v1.0からv2.0への移行の道のり、アイフォンアプリ開発記録日誌 7月2012年

今回で、いったん、休止です。わたしの知識が無いので先に進めませんでした。

注:

書籍cocos2d for iPhone レッスンノート (加藤寛人、佐藤伸吾著) の誤植の修正といってますが、単に、書籍に記載されているコードをXcode4.4でCocos2D Ver2.0に対応させて記述しています。MacOS MountainLionです。
(本書は、Xcode4.0でCOSOS2D Ver1.0に基づいて記載されているので、COSOS2DVer2.0で動かないことがあっても当然であり、著者、出版社に責任はありません。誤植や不備はどの本にもあることです。)







<現在はレッスン4の隕石アステロイドAsteroidゲームです。>

現在の動作していない点

1.隕石が降ってこない

2.砲台が動かない

3.ミサイル弾が発射されない

4.あたり判定、他の動作が確認できない。



・動作している点

1.砲台、地面、パーティクルが表示される。パーティクルはアニメーションされている。

ほかなし。


http://sarudeki.jp/hchibee/2012/05/27/%e8%aa%a4%e6%a4%8d%e3%83%9e%e3%82%b8%e3%81%8b%e3%82%93%e3%81%b9%e3%82%93/#comment-10
誤植マジかんべん | おっさんフリーター(36)がアプリ作る
>このブログにヒントがありそうです。参考にさせてもらいます



そして、結果は、どうか。

上記サイトに「誤植マジかんべん」の記事の通りですね。
私もソースコードを読みましたが、この記事の指摘は、あまり意識してませんでした。

だめでした。

そこで、別の手です。
というか、ほとんど、書籍を参考にしてアプリを作るというのはあきらめていて、
ダウンロードしたソースをCocos2DV2.0に対応できるかを調べてみます。



新規プロジェクトを作成して、Helloworld.m,.hを削除して、
ダウンロードしたファイルをドラッグします。
そして、必要な箇所(今は略)を変更して、コンパイルします。


Undefined symbols for architecture i386: "_OBJC_CLASS_$_GameScene", referenced from objc-class-ref in AppDelegate.o



というエラーが表示されます。
これは、単に、コンパイルをするリストにGameScene.mが載っていないことを示しています。
リストに登録することでこのエラーはなくなります。
これは、XCODEのパンパイルのリストに追加します。


そして、画像がないとか言うエラーを再度リソースフォルダに登録して、実行させると



2012-07-31 21:23:12.896 AsteroidTwo[3709:c07] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'CCScheduler: You can't re-schedule an 'update' selector'. Unschedule it first'
*** First throw call stack:

今度は、CCSchedulerのえらーです。

もしかすると、Sceneの記載がまずいのかもしれません。





ここから先は、もう少し知識をつけてから作業をしたい思います。
そのため、しばらく書籍cocos2d for iPhone レッスンノートの移植と誤植と記載不備の修正は、休止です。









<その他の参考サイト>

アプリを作成するために、プログラムを組んでますが、いつになっても、正確で正式な名称などを覚えていません。

 クラスとメソッドくらいはわかりますが、+、ーの違いのクラスメソッド、インスタンスメソッドなど細分化されそうな名称は、なんとなくのひとくくりの名称で覚えています。

これが、あとで、グーグルで検索しようとするときに、上手く検索できない原因になります。

http://selection9.blogspot.jp/2011/02/objective-c.html
クラスメソッドとインスタンスメソッド

http://wisdom.sakura.ne.jp/programming/objc/objc11.html
クラスメソッド



posted by goodman at 17:53| Comment(3) | アイフォンiPhoneアプリ開発 | このブログの読者になる | 更新情報をチェックする

Cocos2D (V1.0)チュートリアル動画初心者向け、海外、thenewbostonさんの4回〜10回

Cocos2D (V1.0)チュートリアル動画初心者向け、海外thenewbostonさん4回〜10回
cocos2D ver1.0(cocosは現在2.0がリリース)についての初心者向けの解説、ソース
ほんとにシンプルな解説ですが、非常にわかりすい内容です。英語ですが、XCODEをキャプチャしながらの解説なので、英語わからなくても大丈夫です。

Cocos2D iPhone Tutorials - 4 - Making Stuff Move


Cocos2D iPhone Tutorials - 5 - I Like It When You Touch Me


Cocos2D iPhone Tutorials - 6 - How to Create Menus and Menu Items



Cocos2D iPhone Tutorials - 7 - How to Create Scenes


Cocos2D iPhone Tutorials - 8 - Intro to Actions


Cocos2D iPhone Tutorials - 9 - Some Examples of Actions



Cocos2D iPhone Tutorials - 10 - Sequence, Spawn, and Repeat Actions
posted by goodman at 15:31| Comment(0) | アイフォンiPhoneアプリ開発 | このブログの読者になる | 更新情報をチェックする

広告


この広告は60日以上更新がないブログに表示がされております。

以下のいずれかの方法で非表示にすることが可能です。

・記事の投稿、編集をおこなう
・マイブログの【設定】 > 【広告設定】 より、「60日間更新が無い場合」 の 「広告を表示しない」にチェックを入れて保存する。


×

この広告は1年以上新しい記事の投稿がないブログに表示されております。