2014年10月18日土曜日

自作クラスとグローバルな変数

適当なスクリプトに書いておく

using UnityEngine;
using System.Collections;

//グローバル変数(整数)と自作クラス、構造体の定義

public class Global : MonoBehaviour {
    public static int TILESIZE = 16;
}

[System.Serializable]
public struct Vector2Int
{
    public int x;
    public int y;
}

Hierarchyに存在しなくても読み込まれるっぽい。
Global.TILESIZEみたいにアクセスする。

http://unity2dgame.blogspot.jp/2013/06/unity-2d-game-public-static.html
参考

http://panzersoft.blog.fc2.com/blog-entry-65.html
参考

DontDestroyOnLoad()は便利そう

2014年10月15日水曜日

Unityでドットゲーを製作

○各画像の設定
・Pixel to Unit - 1 (画像の1ピクセルをゲーム内座標1に対応)
・Filter - point (フィルタ無しでくっきり)

○カメラサイズ
・size - 縦のドット数÷2

○ゲーム画面解像度
・カメラのサイズの整数倍

例)
320 * 240の画面を縦横2倍に拡大(2*2で1ドットに対応、洞窟物語とか)の場合、
sizeを120、カメラのサイズを640*480にすればok。

描画もドットバイドットにするにはスクリプトで処理が必要。
transformに渡す座標は表示用に限定し、実際の座標は別変数で保持。
フレーム処理の最後にtransform.position.x = Mathf.Floor(pos.x);みたいな処理を入れる。

※Mathf.Floor - 小数点以下切り捨て
※C#だとintでキャストすると0の方向に切り捨てられる((int)(-1.5f)は-1になる)らしい。

Pivotをcenterにしたとき基準の座標は右上基準(Unityでは右上が正)
□□□□
□□■□
□□□□
□□□□

当たり判定は真の座標で処理すべき?
見た目の座標で処理すべき?

2014年10月10日金曜日

マップエディタ

http://www.mapeditor.org/
最強説。
pingでexportできてcvsデータをunityに渡して管理もできる。

http://www.fenrir-inc.com/jp/pictbear/
ドット絵描きやすい。

結局rigidbody2Dはドットのゲームには向かない。

タイルでレベルデザインするのは楽しいけどドットじゃないと映えない。
でもドットだとrigidbody2Dとかに頼るのはきついのかも。

Unity Tutorial 2DShootingを終えて

http://japan.unity3d.com/developer/document/tutorial/2d-shooting-game/
終わった。

C#わからん。IEnumerateとyieldは大体でしか理解できなかったが、ゲームで使う分には使いこなせると思う。

参考になった実装方法
・Mathf.Clampで移動範囲制限
・DeathAreaから出たらオブジェクト削除←便利

あたり判定でレイヤーが出てきたけどごちゃごちゃするし結局タグを設定してスクリプト内で判定させる方法がメインになりそう。レイヤーで当たり判定を設定するのは完全にゲームの構想が決まってからでないと怖いと思う。
あと無敵で判定が消えるのをアニメーション内で設定するのもなんか違和感を感じる。Playerクラスのメンバに無敵時間変数を設定して、それを参照してアニメーション時間も合わせる方法は無いのかな。

http://d.hatena.ne.jp/nakamura001/20110712/1310441315
PlayerPrefsクラスはデータの保存にすげー便利。

http://bribser.co.jp/blog/post-1206/
コリジョン。

2014年10月7日火曜日

javascriptからC#へ

javascriptで開発してる人があまりに少ないのでC#へ移行。
しかしC#はemacsにあまり浸透していなかった。
flymakeとか構文チェック環境は結局作成できず。
余裕あったらflymake勉強しよう。

2014年10月6日月曜日

Emacs導入

MonoDevelopが使いにくかったので導入した。
Windows7に導入するのは初めてだったけどわりとすんなりいった。

http://yoshiiz.blog129.fc2.com/blog-entry-794.html
環境変数設定せなね。

http://d.hatena.ne.jp/sandai/20120304/p2
ついでにカスタマイズ見直し。

[External Tools] -> [External Script Editor] -> [Browse]
で普通にrunemacs.exe選んで問題無かったのでこれでok。


http://blogs.unity3d.com/ja/2010/01/15/emacs-mode-for-unity-javascript/
emacsのUnityJavaScript用のモードがあったから入れた。

http://cx4a.org/software/auto-complete/index.ja.html
自動補完入れた。