iOSアプリを実機で動かせるようになったので、適当に作ってみた

脱獄開発環境を作ったので早速何か作ってみようと思い、実機でしかできない加速度センサーを使ったものを作ってみました。実用性ゼロだし技術的にも特別なことは何もないですけど。

なお、加速度センサーの使い方とかはググればいっぱい出てくるのでここでは書きません。


ソースコード: http://kuramo.ch/iosdev/Shatter.zip

できること

  • 可愛いいおりんが見られます!
  • タップした場所が壊れます。なぞっても壊れます。
  • 壊れた破片は現実の重力方向に落ちて行きます。
  • 軽くタップすると壊れる範囲は小さく、強くタップすると広く壊れます。
  • もう一度タップすると初期状態に戻ります。


左が軽くタップした場合で、右が強くタップした場合


Javieの粉砕エフェクトとかAEのシャッターとかのように壊れますが、重力の方向が現実の重力の方向になっています。

やったこと

  • OpenGL ES Application」でプロジェクトを作成
  • 僕の手元には ES2 で動く実機が無く動作検証できないので、常に ES1 で動くように修正
  • EAGLViewクラスに次のメソッドを実装してタッチイベントを受け取るようにする
    • - (void)touchesBegan:(NSSet*)toucheswithEvent:(UIEvent*)event;
    • - (void)touchesMoved:(NSSet*)toucheswithEvent:(UIEvent*)event;
  • UIAccelerometerを使って加速度を取得できるようにする
    • タップの強さは直前の加速度との差分で
  • OpenGL関連
    • いおりんの画像を読み込んでテクスチャを作成する
    • デプスバッファ用のレンダーバッファを用意し、デプステストを有効にする
    • テクスチャをバインドし、テクスチャマッピングを有効にする
    • 破片の頂点配列とテクスチャ座標の配列を作る
    • glFrustumで視錐台を設定
    • その他いろいろ


ソースコード中には回転軸とか回転角とかあるけど、途中で面倒になって実装してません)



やはり実機で動かせると楽しいですね。画面を上に向けてタップすると画面奥の方へ落ちて行くわけですが、かなり落ちて行ってから画面を下向きにして下から覗き込んで「戻ってきたーw」とかやってしばらく遊んでました。