【Unity】ジャイロでスマホの傾き取得

  • 投稿日:
  • by
  • カテゴリ:
放置ブログにたまに投稿してみる。
最近はUnityでスマホアプリを作ったりしてます。

で、デバイスを「どっちに傾けたか」知りたい時どうするのかなと調べてみると
ジャイロセンサーの Input.gyro.attitude を使うとか
加速度センサー Input.acceleration で済ませるとかあるみたいですが
結論としては Input.gyro.rotationRateUnbiased を使うのが良さげでした。

Input.gyro.rotationRateUnbiasedは、XYZ各軸の回転速度がVector3型で返ってきます。
デバイスを奥に倒すとXがマイナス、手前に傾けるとXがプラス、
左に向けるとYがマイナス、右に向けるとYがプラス、
時計周りにするとZがマイナス、反時計回りだとZがプラス、という感じです。
速度なので動かすのをやめると値は0に近づきます。

Input.gyro.attitude はデバイスの姿勢をクォータニオンで返すので、たとえば
デバイスの傾きと床オブジェクトの傾きが連動する玉転がしゲームとかの用途向き。
寝転んだ状態での操作をやろうとするには難しい。

Input.acceleration はシェイクジェスチャーとかの用途向き。
常に重力加速がかかってるからそれを元に傾きを求められなくはないけど
余計な動きが加わると値が荒ぶりそう。
最寄りのカフェを地図上ですばやく見つけられるアプリをリリースしました。

・6100件以上のカフェ/喫茶店を収録。(次回の更新で7566件に増えます)
・犬同伴で利用できる「ドッグカフェ」も180件収録。
・fousquareに登録されたカフェを表示して、チェックインできます。

あったら便利そうだから作ろうかなーと思ったまま数年経ち、
最近になって似たようなアプリがいくつか出ててそれなりに需要ありそうなので
負けじとリリースしてみました。

たった85円です。ぜひ買ってください!お願いします。

Macを買ってくるところから始めて制作期間2週間くらい。
Titanium Studioを使って開発しました。

TwiPla - イベント告知・出欠管理サイト
この手のサイト、海外には結構ありますが、日本語のがあればいいなと思い作ってみました。
かなりシンプルな作りです。要望があれば改良していきます。
ATNDでいいじゃん、と言われそうですが、まぁ気軽に使ってもらえればと思っています。

普段Flashばかり使ってて、こういうサイト作るのは初めてなんだけど
なかなか面白いね。今回はCakePHPを使いました。

mixiアプリのカテゴリ掲載申請で却下されるパターン

  • 投稿日:
  • by
  • カテゴリ:

Union Platform を使って対戦ゲームを作りました。
下記いずれかで遊べます。
Facebook(ランキングあり)
Kongregate版
モゲラ版

mixiのカテゴリに掲載されてから公開しようかと思ってたけど
なかなか通らないんですよ。一度ならず二度までも!です。
そして却下されると10日も待たないと再申請できないという..

具体的な却下理由は説明はしてくれなくて個別の質問も受け付けてないので
参考までに私の却下理由を載せておくよ。


・デベロッパー登録情報が正確に入力されておりません。

→デベロッパー登録したのが数カ月前なので、何のことかすっかり忘れていたけど
登録した時の情報がいい加減すぎたようです。
でも登録内容を確認できるページが見当たらず、どこで更新するのか..
mixi Developer Centerにある「デベロッパー登録画面 」リンクをクリックして登録しなおせば更新されるようです。


・また、掲載されている広告に関しましてもmixiアプリ広告掲載ガイドラインに抵触しておりましたので、こちらも併せましてご確認下さい。

→「リンク先は別ウインドウにて展開してください」を見逃してました。
広告掲載位置の指定が厳しいので良く読んだと思ったのだけど
実際広告クリックしてみるまで気づかなかった..
そして Google AdSense は_selfリンク固定なのです!
PC版のmixiアプリでは Google AdSense 使えないってことだね。


・青少年保護の観点から、mixiに登録されているユーザー様のみ利用できる仕様に変更していただく必要がございます。
他サイト様(mixi登録ユーザー様以外の利用者がいる場合)との連動アプリで
チャット機能等コミュニケーションがとれる仕様ですと、年齢認証が不確実の
可能性が残るため上記の対応が掲載に必要となりますので、ご協力ください。

→これは意外だった、この詳細はガイドラインに載ってないと思う。
「青少年保護のために...18歳未満の利用を制限する場合があります。」という規定はあり、
今回のアプリはチャット機能があるので18禁指定になるだろうとは思ってた。
mixi以外とコミュニケーションできないなんて閉鎖的だなぁ。
mixiの年齢確認自体が適当なので、mixi内だけのコミュニケーションならOKって青少年保護になってなくない?

そんなわけで、審査に通らないことには載せてもらえないので
また10日後にチャレンジするよ!

Union Platform インストール方法

  • 投稿日:
  • by
  • カテゴリ:
Flashでリアルタイム通信するための Union Server をUnixにインストールする方法について。

僕はレンタルサーバ( DreamHost の Virtual Private Server )を借りてそこにインストールしました。
追記:さくらVPSのほうが良かったので乗り換えました。

Unixコマンドのことは良く分かってないですが、とりあえず下記の手順でいけます。

▼インストール
sshでログインして下記コマンドを入力。
wget http://www.unionplatform.com/releases/union/union_1.0.0_alpha6.tar.gz
tar xzvf union_1.0.0_alpha6.tar.gz union
rm union_1.0.0_alpha6.tar.gz
cd union
chmod 775 *
やってることは、ダウンロードして、unionディレクトリに解凍して、不要になった圧縮ファイル削除して、unionディレクトリに移動して、パーミッションを変更です。

▼設定
union.xmlを開いて、管理パスワードを変更。
念のため<charset>UTF-8</charset>を追記。

▼起動
java -Dfile.encoding=UTF-8 -cp lib/union.jar:lib/stax-api-1.0.1.jar:lib/wstx-asl-3.2.6.jar net.user1.union.core.UnionMain start &
日本語を送受信する場合は、上記のように文字コードを指定する必要があります。

▼停止
「ps -x」でプロセス一覧を表示して
「kill プロセス番号」で停止させる。
管理ツール(UnionAdmin_1.0.0.84_Alpha6.swf)からログインして止めることもできます。

▼死活監視
サーバを起動し続けていると10日ぐらいで落ちることがあったので、
止まった時は自動で再起動するようにshellスクリプトを書きました。
#!/bin/sh
while true
do
    isAlive=`ps x | grep union | grep -v grep | wc -l`
    if [ $[isAlive] = 0 ]; then 
		java -Dfile.encoding=UTF-8 -cp lib/union.jar:lib/stax-api-1.0.1.jar:lib/wstx-asl-3.2.6.jar net.user1.union.core.UnionMain start &
    fi
    sleep 20
done
上記をobserve.shというファイル名で保存。 下記のコマンドでバックグラウンドモードで常駐します。
sh observe.sh &

Flashでリアルタイム通信するためのソリューションは色々あるけど、
Unionはかなり簡単にインストールできるし、機能も十分なのでおすすめ。
Let's enjoy Union Platform !

とても参考になるサイト:
fla.la » Union Platform
Reactor API 日本語リファレンス

超むりげー@ASAGAYA LOFT A

  • 投稿日:
  • by
  • カテゴリ:
テーマに基づいて48時間以内にゲームを移植する企画「むりげー」。
これまではただの飲み会でしたが、
2月7日に無茶なイベントを開催するそうです。

超むりげー

2月5日にテーマが発表されるので
Flashでゲーム作って参加すると面白いよ。

RTMPとBitmapData.draw

  • 投稿日:
  • by
  • カテゴリ:
RTMPストリーミングビデオをBitmapData.drawするには
ストリーミングサーバ側の設定で下記の設定をしないといけないわけですが
<AudioSampleAccess enabled="true" />

設定しているにもかかわらずエラーが出続けてdrawできない時がある。
10回接続して1回くらい起こる。
その時はonMetaDataイベントも受け取れていない。

よくわからないけどタイミングの問題らしく
"NetConnection.Connect.Success"が届いた直後にstream.play()するとダメみたい。
下記のような感じで0.1秒くらい待ってからplay()するとエラーが出なくなった。

var _video : Video = new Video(320, 240);
var _stream : NetStream;
var _connection:NetConnection = new NetConnection();

function connect(){
    _connection.addEventListener(NetStatusEvent.NET_STATUS, onNetStatus);
    _connection.connect(rtmp_app);
}
function onNetStatus( event : NetStatusEvent ){
    switch(event.info.code){
        case "NetConnection.Connect.Success":
            _stream = new NetStream(_connection);
            _video.attachNetStream(_stream);
            var _timer:Timer = new Timer(100, 1);
            _timer.addEventListener(TimerEvent.TIMER, onTimer);
            _timer.start();
            break;
    }
}
function onTimer(e:TimerEvent){
    _stream.play(rtmp_file);
}

buffer時間と関係あるのかな。

FLVPlaybackで読み込めない

  • 投稿日:
  • by
  • カテゴリ:
ほとんど問題ないのに、特定のストリーミングflvだけ表示できなくて、なんでかな~と思ったらFLVPlaybackコンポーネントが古いせいでした。
たぶんCS3の頃のFLVPlaybackを使い回してたから。CS4付属のに変えたら解決。

FLVPlayback.VERSIONが"2.1.0.14"だとダメ、"2.1.0.19"ならOK。
具体的な原因はよくわかんない。

下記のJUV RTMP Researcherというプロキシを使うとRTMPパケットをモニタリングできる。
http://www.smaxe.com/product.jsf?id=juv-rtmp-researcher

Windows7 サイドバーの領域確保

  • 投稿日:
  • by
  • カテゴリ:

Windows7をインストールしたんですが、ガジェット表示のためのサイドバー領域がなくなってるじゃないですか。
それだとウィンドウを最大化した時にウィンドウとガジェットが重なってしまう。

twigadgeやCPU meterを常に表示しておきたい僕としては、
ガジェットを前面にとかじゃなくて、Vistaみたいに最大化時に重ならないようにしたい!
ということで探したらよいソフトがありました。

MaxMaxというツールをインストールすると解決です。
こちらからダウンロードできます。

サイドバーってそんなに不人気だったの?
選択肢として残しておいてくれても良いのに。