夏までにiPhone アプリつくってみっか!

趣味でiPhone/Androidアプリを開発し、日々勉強した事を書いています。オープンワールド系レースゲームをUnityで開発中です。

cocos2d

【偽スペースハリアー】迫力を出すため3Dの計算にインチキを投入

前回地上物を表示させた偽スペハリですが、本家スペハリのような迫力がありませんでした。どうやら普通に3Dの計算をするとダメなようなので少し計算にインチキを加えてやりました。 ついでに背の高い木と空中を浮遊する岩を追加しています。 岩の下の地面に…

【偽スペースハリアー】地上物を追加。だが違う。何かが違う!

偽スペースハリアープロジェクトにようやく敵キャラクター的なオブジェクトを追加します。 今回は地上のスクロールとシンクロして動く茂みを表示してみました。こんな感じです。しかし、本家のスペハリと比較するとかなりの違和感を感じます。 本物はもっと…

【偽スペースハリアー】なんと美しい!日本の空、山、森を再現。

前回チェック模様の地面の表示まで進んだ偽スペースハリアープロジェクト。 今回は地面の奥に表示される空、山、森を表示してみました。グラデーションが美しい空は地平線に合わせて上下させているだけで左右にはスクロールしていません。 奥の山と手前の森…

【偽スペースハリアー】地面のチェッカー模様を完全再現

前回はスプライトでスペースハリアー風の地面の横縞を作りました。 しかしながらスプライトに動く縞模様をつけるのは無理っぽいことに気がつきました。 そこで、逆転の発想で地面全体から横縞以外の部分を抜く事にしました。 その後ろに別の色の地面を重ね合…

【偽スペースハリアー】地面の横縞をとりあえず表示。まだ真っ白だけど。

偽スペースハリアープロジェクトを引き続き進めています。 今回は手前にスクロールする横縞を表示します。 まだ地面のチェッカー模様は実現できていませんが、縦方向へのスクロールが完成しました。横縞はスプライトで表示しますが、CCSpriteのpositionやsca…

【Sprite Kit vs cocos2d】パフォーマンス対決(最終戦) どっちを使うか決めました!

さて、前回の対戦(前編、後編)ではほぼ引き分けとなりましたSprite Kitとcocos2dのパフォーマンス対決、いよいよ今回が最終戦となります。 この対戦の勝者が私の(エセ)スペースハリアープロジェクトのゲームエンジンに採用されることになります。今回は、…

【SpriteKit】Sprite Kit vs cocos2d パフォーマンス対決 (続編) バッチノードでばっちり?

前回の、「Sprite Kit vs cocos2d パフォーマンス対決! 意外にも?」の続編になります。Sprite Kitに関しましてはAppleのオフィシャルドキュメント「Sprite Kit Programming Guide」が現状唯一の解説書になりますので、ひたすら読んでいるところです。(Get…

【SpriteKit】Sprite Kit vs cocos2d パフォーマンス対決! 意外にも?

次のプロジェクトでSprite Kitにチャレンジしようかcocos2dを引き続き使おうか迷っています。 そこで、パフォーマンス対決をやってみました。ちなみにSprite Kitのプロジェクトを作るのは簡単で、Xcode5のWelcomeスクリーンからCreate a new Xcode projectを…

【cocos2d】タイルマップに壁を作る

以前のポスト、「【cocos2d】慣性スクロールの実装。背景をヌルヌル動かす」でキャラクターをタイルマップ上で自由自在に動かすことができるようになりました。 今回は、キャラクターの行く手を阻む壁をタイルマップ上に表現してみます。例によって、この本…

【cocos2d】convertToWorldSpace, convertToWorldSpaceAR 親に聞くか自分に聞くか

cocos2dで原点が異なるオブジェクト同士、あるいはタッチ位置とオブジェクトの座標を比較するときに便利なconvertToWorldSpace系のメソッドですが、良く理解していなかったので少し調べました。convertToWorldSpaceの類似メソッドとしてconvertToWorldSpaceA…

【BeeCluster】iOS7対応?版をサブミット。実機確認はしていない。

3日ほど前にアップルから「Submit your iOS 7 apps today」というメールが来ました。自分のiPhoneをiOS7に上げてしまうとiOS6での実機テストができなくなってしまうので、とりあえずXcode5をダウンロードし、iOS7シミュレーターで動作を確認してみました。c…

【cocos2d】タッチを処理するクラスを作っていたらtouchDisptcherもどきになった

CCSpriteのオブジェクトでタッチを処理しようとしたら結局cocos2dのtouchDispatcherみたいなものを作っていたという話。 touchDispatcherの事は今日まで使った事がなく、よく理解していなかったのですが、「もしかしたら同じようなものなのでは」と思い調べ…

【BeeCluster】外人のレビューでヘコむ

アプリマーケティング研究所さんの「レビュー評価とランキングに相関関係あり?アプリのレビュー評価を引き上げる4つのポイント。」を読みました。 App Storeのレビューの重要さを改めて認識し、早速App AnnieでBeeClusterのレビューをチェック!いきなり目…

【cocos2d】慣性スクロールの実装。背景をヌルヌル動かす

タッチ操作に合わせて気持ちよく背景を慣性スクロールさせてみます。 実際にはタッチ操作で自機の座標を動かし、同時に背景の座標をを逆方向に動かす事でキャラクターを画面の中心に保ったまま背景をスクロールさせています。早速キャラクターのクラスCatク…

【cocos2d】タイルマップの隙間に四苦八苦。解決策は?

引き続きタイルマップと格闘しておりますが、今日はタイルマップのマップチップの間の隙間に悩まされました。 この醜いギャップを何とかしないことには先に進めないのです。問題その1: マップを動かさない状態で特定の位置に出現する線状の隙間前回作ったプ…

【cocos2d, Tiled】Tiled 0.9.1のサンプルデータで画面が変に。tsxファイルありのタイルマップは要注意

つぎのアプリではタイルマップを使ってみようと思い、しばらく放置していたTiledを0.8.1から最新版の0.9.1にアップグレードし、早速タイルマップを表示するプログラムを組んでみました。マップのデータを用意していないので、とりあえずTiledのexamplesフォ…

【iPhoneアプリ、cocos2d】アプリをGame Center対応にする方法(後編: プログラミング編)

cocos2dで開発したiPhoneアプリをGame Center対応にする方法の後編です。 前編はこちら。 前編でiTunes Connectでの設定を終えました。後編の今回はGame CenterのLeaderboard機能を実装するプログラミングを行います。1. Info.plistファイルの編集 プロジェ…

【cocos2d】ポーズメニューの実装方法

BeeClusterにポーズメニューを実装したときの方法をメモしておきます。cocos2dでアプリの動作を一時停止するにはCCDirectorにpauseメッセージを送ります。 [[CCDirector sharedDirector] pause]; BGMを止める場合はSimpleAudioEngineにpauseBackgroundMusic…

【cocos2d】パーティクルを表示中にパーティクルバッチノードからRemoveするとクラッシュ!どうするか?

cocos2dのCCParticleBatchNodeって、パーティクル表示中にremoveAllChildrenで子ノードを削除するとクラッシュしませんか?いろいろ調べたのですが、結局クラッシュの原因は分かりませんでした。 もしかするとcocos2dのバグかもしれません。同じ現象が報告さ…

【BeeCluster】一瞬「うっ」となるTwitterボタンのレスポンスを改善

すみません。この方法は根本的にダメでした。 iOS5.0.1の実機だと一応動作していたのですが、iOS6のシミュレーターでクラッシュしました。 __weak指定の_tweetViewControllerが解放されるのが原因でした。 __weakを外すとリテインサイクルになるかもしれない…

【cocos2d】BeeClusterにTwitterボタンをつけてハイスコアをツイート

BeeClusterにツイートボタンを付けてツイッターでハイスコアをつぶやけるようにしてみました。追記:この方法でツイッターボタンのレスポンスが遅いと感じた方は「【BeeCluster】一瞬「うっ」となるTwitterボタンのレスポンスを改善」もご覧下さい。全面的に…

【cocos2d】色が変化するライフゲージをボスにつけてみた

現行バージョンのBeeClusterはボスキャラのダメージがどれほどなのかがわからず戦っていて不安になるのでライフゲージをつけてみました。 また、ライフの残量に合わせて色を緑から赤に変化させることでより一層のダメージ感を演出しています。 まずは、動画…

【BeeCluster】CCTintByを使いダメージを受けたハチを腐らせる処理を実装

3週間ぶりのプログラミングなので、リハビリがてら昨日の記事で書いた改善案の一つ、自機がダメージを受けたら色を変える処理を実装してみました。 わずか数行の変更ですが、リリース済みの完璧な(?)プログラムに手を入れるのはなぜか気が重いですね。これ…

【cocos2d】cocos2dプロジェクトをARC対応にする

追記:Xcode5だとここに書いてある方法ではは上手く行かないみたいなので、もっと簡単なこちらのリンクに書いてある方法をオススメします。 【cocos2d】Xcode5で新規cocos2dプロジェクトを一番簡単にARC対応にする方法 - 夏までにiPhone アプリつくってみっ…

【iPhoneアプリ】次のアプリは物理演算エンジンをつかってみるか

BADLANDというアプリがセールで50%offだったので買ってみました。 こんな感じの影絵風の画面の中を謎のキャラクターが飛び回る横スクロールゲームです。 Apple Design Awardsの一つに選ばれたアプリです。 タップするだけの簡単操作なのですが、物理演算を使…

【cocos2d】異なるテクスチャアトラスに同じ名前の画像ファイルを入れる時は注意!

App Storeへサブミットした後にバグがみつかりました。 エンディング後の2週目で原因不明のクラッシュが起きるという物です。 ゲームオーバー後の再スタートは成功しているので初期化はできているはずなのですが・・・そこで気になったのがテクスチャアトラ…

【BeeCluster】取りあえず完成!しかしiPad6.1シミュレーターでクラッシュ!最適化の副作用か?

4月1日にプロジェクトを開始したBeeCluster。 本日6月18日に完成しました! 3ヶ月で開発するという目標は無事達成しました。 あとはAppleに審査に出してリリースとなりますが、やり方はこれから調べます。と思ったらiPad 6.1シミュレーターでクラッシュする…

【Objective-C】リリースビルドでクラッシュ発生!原因はあいつか!

そろそろリリース時期も近くなったので、初めてリリースビルドを試してみました。実機で走らせてみると全ての敵キャラクターが画面左下に向かって飛んで行きます。そしてしばらくするとクラッシュ。 そして、シミュレーターで実行する場合は正常に動きます。…

【Objective-C】NSUserDefaultsを使ってハイスコアをセーブ

BeeClusterのメインプログラムがほぼ完成し、リリースに向け少しずつ改良しています。 今回は、NSUserDefaultsを使ってハイスコアを記録できるようにしました。 アプリケーションを削除しない限りハイスコアを保持できますので、ハイスコアを更新する楽しみ…

【cocos2d】CCDelayTimeで時間待ち

cocos2dのCCActionで時間待ちをするとき、CCDelayTimeを使えばいいこといまさら知りました。 これまではそれを知らなかったのでCCRotateByで角度を0にしたりやCCMoveByで移動をゼロにして時間稼ぎしていました。 これでも動いていましたが、せっかくなので全…