ハルスター・アクション(beta)

2014年~2015年にかけて作っていたゲームです。
Unity で作りました。イラストは友達が作りました。

ルール

マリオのようなアクションゲームです。
ステージにあるぶどうを集めたりしながら、ゴールを目指します。

操作方法

  • ←・→ : 移動
  • SPACE : ジャンプ
    ゲームを進めると、そのほかのアクションができるようになります。

ダウンロード

クリエイティブ・コモンズ・ライセンス
この 作品 は クリエイティブ・コモンズ 表示 – 非営利 – 改変禁止 4.0 国際 ライセンスの下に提供されています。

ダウンロード
上のリンクを開き、右上のダウンロードボタンからダウンロードしてください(Zip形式)
解凍し、 game.exe を開くと、ゲームが起動します。

※このゲームはかなりの鬼畜ゲームだそうです。
 製作者によりクリアできることは確認されておりますが(W0を除く)、
 難しいそうです。がんばってください!!

※このゲームは beta 版です。ステージに不具合がある場合があります。
 また、現在 Unity でなく、別のフレームワークでの開発を試しています。
 更新はそちらで行うかもしれません。

工夫したところ

ステージのシーン

ステージ(W1-1、W1-2)ごとにシーンを作るのではなく、
ステージの状態を CSV で保存し、それを利用するようにしました。

UnityでYAMLをパースする

※ UnityYamlMerge のことではありません!

Unity で、2D ステージの内容を YAML で作って、
それをパースする方法です。

yaml-net を入れる

http://sourceforge.net/projects/yaml-net-parser/files/から、
フォルダーをたどっていくと、snapshot.zip があるので、ダウンロードし、展開してください。

Code ディレクトリ内にある、「Yaml.dll」を、Unityの Assets/Plugins に突っ込みます。
yaml-dllunity-plugins-folder-yamldll-import

スクリプトを追加

新しいスクリプトを作成し、次のように書きます。

using Yaml;

// 省略

void Start () {
    Node yamlNode = Node.Parse("- item1\n- item2");
    Debug.Log(yamlNode);
}
  • Yaml 名前空間が見つからない? Plugins/ ディレクトリに Yaml は入っていますか?
  • Node クラスは、Yaml.Node です。

これで、パースができました。
このスクリプトを、シーン内の空のオブジェクトにアタッチして、実行してみましょう。

yaml-unity-parse

成功です!

yaml-net の詳細情報は、公式サイトを参照してください!

RectTransformのoffsetMinとoffsetMaxについて

こんにちは。

Unity 4.6で、新しいUI Systemとして、
「uGUI」が追加されました(結構前だけど)。

New UI System: Design UIs for your game or application using Unity’s powerful new component based UI framework and visual tools.

そのUIの座標の指定なのですが、
Rect Transformというものを使っていて、
結構複雑です。

ここでは、座標・サイズの指定ができるプロパティ、
「offsetMin」「offsetMax」について調べたので、紹介します。

続きを読む →

Unity2D用のアニメーションするスプライト作った

(移動はjsにて)

Unity2Dのゲームを作っています

その時に作ったキャラクターをアニメーションさせてみました!

初めてのアニメーションで、データ間違えたりとかして難しかったです。

ソフトは、Edgeを使わせていただきました。

画像はこちらです。

UnityでSliceしたとき、隣同士の画像の端っこが見えてしまうので、

1px間隔を開けています。

Unity2DでRaycastを使って座標からGameObjectを取得する

Raycastの練習として、やってみました。
ほかの取り方もあるかもしれません。

Vector3 pos = new Vector3(/* 好きな値 */);
RaycastHit2D hit = Physics2D.Raycast(pos, new Vector3(0, 0, 1), 100);

// 可視化
Debug.DrawRay(pos, new Vector3(0, 0, 100), Color.blue, 1);

// コンソールにhitしたGameObjectを出力
Debug.Log(hit.collider);

このhit.colliderでGameObjectを取れます。

マウス座標からもとれるよ

このやり方だと、遠回りになるかもしれませんが、
マウス座標からとるのも簡単です!
上のコードの最初の行を、次のように変えるとできます。

Vector3 pos = Camera.main.ScreenToWorldPoint(Input.mousePosition);

Unity2Dでspriteがぼやける

こちらのサイトを参考にしました。

キャラクターがかわいい!!

上のブログの通りで、

Assets ビューでSpriteを選択したとき、
Filter ModeをBilinearからPoint (no filter)に変えます。

ありがとうございます!