2014年7月23日水曜日

Unity スマートフォンの各種センサー値をPCに渡す

 スマホのセンサーをPCに入力するという分野にはDroidGloveというアプリが既にあるのですが、自分でも同じようなのを作ってゲーム中でなんか棒を振り回したりしたいな等と思いました。
 という訳で、やりました。



 とりあえず値は取れますレベルの状態ではありますが作業記録がてら一応ブツを上げておきます。 
 https://googledrive.com/host/0ByUpVh3J6kXjbmROczV0Q3V2YXM

 Good ol' socketsを使用してAndroidからでもソケット通信出来るようにしてあります。
 ネットワーク越しでも接続できますが、ポートの解放が必要になると思います。

2014年7月17日木曜日

Unity WebPlayerから直接ツイートする方法

 WebPlayer上で直接ツイートをしようとするとcrossdomain.xmlが無い等というエラーで弾かれます。
 多分https://twitter.com/crossdomain.xmlの制約に引っかかってるのかと思いますが、とりあえずこの問題を回避する為にGAEを中継しようと思います。

 以下のサイトを参考にさせて頂きました。というよりはほぼそのまま使わせて頂いております。
http://www4370ue.sakura.ne.jp/crimson/2013/02/python-oauth2%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6twitter%E3%81%AB%E6%8A%95%E7%A8%BF%E3%81%99%E3%82%8B/

 要はWebPlayerからPostされた内容をGAEが受け取ってTwitterに中継すればいいのでPost時に上記サイトで紹介されている処理を動かせばOKです。
 こんな感じですね。



 幾つか導入が必要なライブラリがあります。
 Githubで公開されているライブラリをダウンロードして、プロジェクトに追加しましょう。適切なフォルダをドラッグ&ドロップすればOKです。
 他の部分はhttp://soyliquid.blogspot.jp/2014/06/gaeweb_28.htmlと同じ要領でOKです。

 もしwebapp2でエラーが出た場合はapp.yamlに

libraries:
- name: webapp2
  version: latest

 の記述を追加してみてください。

2014年7月14日月曜日

1週間げーむじゃむ2014/07 2週目

一夏のアバンなんちゃら。

提出作品:Virtual Summer Program
http://unityroom.com/games/play/202

どうも環境によってはクラッシュするようなので
原因調べて対処しておきたいところです。

Unity エディタ拡張 Hierarchyに各GameObjectのTagとLayerを表示する

 UnityはEditorの拡張が容易にできるそうです。という訳で、実際にやってみました。
 以下のような内容のスクリプトをAsset/Editorディレクトリに作成します。

*** HierarchyInfoAddon.cs

using UnityEngine;
using System.Collections;
using UnityEditor;

[InitializeOnLoad]
public class HierarchyInfoAddon {

static HierarchyInfoAddon() {
EditorApplication.hierarchyWindowItemOnGUI += GUIRefresh;
}

static void GUIRefresh(int instanceID, Rect selectionRect) {
GameObject o = (GameObject)EditorUtility.InstanceIDToObject(instanceID);
if(o == null) return;
Rect r = selectionRect;
r.x += r.width - 50;
GUI.Label(r, Cut(o.tag) + "/" + Cut(LayerMask.LayerToName(o.layer))); 
}

private static string Cut(string s) {
if(s.Length >= 3) {
return s.Substring(0, 3);
} else {
return s.Substring(0, s.Length);
}
}
}

***
 
 その結果がコチラです。

 TagやLayerの指定をうっかり間違えてそのまま気付かずに悶絶することが度々あったので
 こうやって一覧で見えるようにしておけば安心です。

Unityでビルドサイズを手動で削減する方法

 がんがんAssetを突っ込みまくっていざビルドしてみたら
 異様にファイルサイズが巨大化して悶絶したことはありませんでしょうか。
 先程悶絶しました。
 なのでその時の対処法を書き残しておきます。

1.ファイルサイズの内訳を調べる
 一回ビルドした後にログを表示します。
 ログはConsoleタブの右上のメニューから表示できます。
この赤枠で囲んだ項目をクリックすればOKです。
 
 Editor.Logが表示されますので、末尾から"player size"で検索しましょう。
 こんな感じでビルド時のファイルサイズの内訳が見えます。

2.不要なファイルを削除する
 http://docs-jp.unity3d.com/Documentation/Manual/ReducingFilesize.html
 本来Unityは不要なファイルを省いてビルドしてくれるそうですが
 何故かダメな時もあるので、そんな場合は手動で除去しましょう。
 UnityEditor上から不要なAssetを選択して削除すればOKです。

2014年7月7日月曜日

1週間げーむじゃむ2014/06 5週目・2014/07 1週目

先週の成果物です。

提出作品:Star World Crisis
http://unityroom.com/game/000094

横STGのゲーム性についての今の自分なりの回答。
スピード感とサウンドと破壊の手応え。

大体
「エフェクトそのままだと挙動が嘘過ぎで浮くなあ。空気抵抗受けないと」
「撃墜時に慣性無視して垂直落下するのは嘘っぽい……」
「着水したら水柱あげないと嘘っぽい……」
「着水したら水に引っ張られて減速しないと嘘っぽい……」
という挙動の嘘っぽさを解消することに工数の大半を費やした気がします。

2014年7月2日水曜日

1週間げーむじゃむ2014/06 4週目

ブログの方に書いてなかったので一応書いておくなど。

提出作品:THE 箱投げOnline

物理演算使った協力型アスレチックをつくろう
→足場用の箱持たせよう
→持ち上げた箱がいい感じの挙動するようにしよう
→箱投げてる方が楽しくなってきた

だいたいこんな経緯でできました。