kidoOooOoooOOom

IT系で開発やってます

Unity

UnityのUnlit/Texture shaderを理解

Unity内蔵の Unlit/Texture shader は非常にシンプル。 ライティングの反映無し、透過無しのテクスチャのみのシェーダー。 Shader "Unlit/Texture" { Properties { _MainTex ("Base (RGB)", 2D) = "white" {} } SubShader { Tags { "RenderType"="Opaque" } …

Unityでアルファマスクを使うshaderについて理解

githubで公開されている下記shaderについて学んだのでメモる。 github.com shader コードはここ unity-alphamask/SpriteWithMask.shader at master · keijiro/unity-alphamask · GitHubまずは Blend SrcAlpha OneMinusSrcAlphaBlendingに関する設定。Blendin…

UnityのSepiatone shaderを理解する

Shaderを勉強しはじめたので、まずはシンプルな Sepiatone shaderの中身を写経しながら基本的なところを学んでいく。Unity の ImageEffectsで使われているセピアトーン化のshaderコードがこれ Shader "Hidden/Sepiatone Effect" { Properties { _MainTex ("B…

UnityでScriptableObjectを用いて設定管理

拡張エディタやImporterの設定ファイルとして、ScriptableObjectが使用できる。 tsubakit1.hateblo.jp 例えば今回は、画像ファイルをUnity上にインポートする際に、特定のフォルダ配下の場合はTrue color にしたりmip mapをOFFにするといった自動設定を行う…

UnityでFBXファイルをインポートした時のデフォルト設定を自動化

Maya等で作成した3Dモデルが含まれるFBXファイルはUnity上にドラッグ&ドロップするだけでインポートが可能だが、デフォルト設定では色々とまずいので設定を変える必要があったりする。 インポートするファイルの数がたいしたことなければ問題ないが、100を超…

Unityでアプリ起動時の画面向き設定

スマホの縦向きのレイアウトしか考慮しない場合は縦向き固定にする。 [Build Settings] から [Player Settings]を開き、Resolution and Presentation のところの Orientation を変更する。 Portrait: 縦向きでホームボタンが下固定 PortraitUpsideDown: 縦向…

Monodevelop ショートカットメモ

とりあえず使いそうなのメモ コードスニペット: 予約語を入れて tab 2回 定義へジャンプ: 変数を選択して cmd + y 参照先リストアップ: cmd + shift + y リファクタリング: Cmd + r 指定行へ移動: Cmd + L コメント挿入: /// 矩形範囲選択: option + マウス…

一時停止して演出を流す

ゲーム進行は一時停止させたままカットイン演出などを入れたい場合、Time.timeScaleを0fにして世界を止めて、動かせたいものだけiTweenのignoretimescaleオプションを使って動かせる。 (制御系のクラス) if (pauseFlag) { Time.timeScale = 0f; return; } el…

任意の攻撃ポイントに対してシールド成功かどうかをチェックする

盾のオブジェクトに攻撃発生座標を渡して、ガードが成功したかどうかを判定したいような場合、下記のようにPhysics.CheckSphereを使った。 public bool IsGuardSuccess(Vector3 attackPoint) { if (Physics.CheckSphere(attackPoint, shieldRange)){ Instant…

こっち見んな を作る

敵キャラクターなどにCameraの方向を向かせる単純なスクリプト // Update is called once per frame void Update () { var newRotation = Quaternion.LookRotation(Camera.main.transform.position - transform.position).eulerAngles; newRotation.x = 0; n…

UnityでWS

今日は勉強会でUnityからWebSocketを使う発表を聞かせてもらった。C#のWebSocketライブラリにはこういうのがあるらしい WebSocketSharp (今回はこれを使用) SuperWebSocket WebSocket4Net SuperWebSocketからforkしてクライアント部分だけ切り出したもの? W…

最初の糞ゲーを作って発表しました

今日は草の根のUnity勉強会で自分で作った糞ゲーを発表してきた。 糞ゲーをこちら。 https://dl.dropboxusercontent.com/u/6023300/Space_Shooter/Space_Shooter.html基本はUnity公式チュートリアルを使ったもので、プラスαとしてボス敵を追加している。 ボ…

Space Shooterにボス敵を追加&ハイスコア管理追加

公式チュートリアルのSpace Shooterでは隕石が飛んでくるだけの状態で終わって寂しいので、勉強がてらボス敵を追加してみた。 今日できたところまでのボスの仕様は下記の通り。 ボスにはHPがある HPがある程度へったら攻撃パターンが変わる ボスの弾を当てた…

Unity Tutorial Beginner Space Shooter chapter 14で学んだ事

音源の設定。 Assetsの音源を各オブジェクトにドラッグすれば基本的にはOK. 爆発エフェクトは発生と直後に音を鳴らしたいので、Play on Awakeをチェックする。 Playerの弾を発射する時の音は、Playerに音源をつけたあと Play on Awakeのチェックを外し、 Scr…

Unity Tutorial Beginner Space Shooter chapter 13 で学んだ事

プログラムの実行を中断して、任意のタイミングで再開する方法として yieldを使う。 yieldを書ける場所としては メソッドの戻り値がIEnumerator型である StartCoroutine()にメソッド名を指定して呼び出される ことが条件である。 チュートリアルでは、最初の…

Unity Tutorial Beginner Space Shooter chapter 11,12 で学んだ事

衝突や表示を何も持たないGameObjectを作成し、それをGameControllerとしてScrpitを付与した。Quaternionはunityで回転の制御に用いられているもの。 チュートリアルでは、回転していないQuaternionとして、Quaternion.identityが使われた。参考URL Quaterni…

Unity Tutorial Beginner Space Shooter chapter 16,17で学んだ事

対象のキーボード入力があったかどうかをチェックするには、Input.GetKeyDown (押した瞬間を確認。押しっぱなしでも1回入力として扱う)を使う。 例えば、'R'が入力されたかどうかの判定は下記の通り。 Input.GetKeyDown(KeyCode.R)) Input.GetKeyDown https…

Unity Tutorial Beginner Space Shooter chapter 15で学んだ事

GUI Textを用いてスコア表示 Viewport Space 画面の左下の座標を(0,0), 右上の座標を(1,1)としてtrasnform指定する方式 Screen Space 画面のx,y座標を絶対値で指定する方式 GameController側でスコア管理とスコアテキストの更新を行うようにスクリプトを更新…

イベント関数の実行順 / Execution Order of Event Functions

よく見そうなのでメモ。 参考URL http://docs-jp.unity3d.com/Documentation/Manual/ExecutionOrder.html おおざっぱにとらえると、 Awake() Start() Update() レンダリングやコルーチンなどイベントに応じて OnDestroy

Unityとフレーム、Update()とTime.deltaTimeについて

フレームレートは、動画において、単位時間あたりいくつフレーム (映像)・コマのこと)が処理されるか、という値。 60fpsあれば十分に滑らかな映像が再現できるとされ、逆に、15fpsに満たない場合はカクカクする。Unity におけるフレームは、1秒間に何枚とい…

Texture Packerという存在

今日はTexture Packerなる存在も教えて頂いた。 一言で言えば複数のTextureをPackしてくれる便利ソフトらしい 参考URL Unityでコインゲー開発:TexturePacker http://pukapuka-ahirusan.blogspot.jp/2012/08/unitytexturepacker.html[Unity3D]NGUIのAtlasを…

NGUIという存在

今日はUnityにはNGUIというのがあって、それで2DのGUIを大体制御しているよ ということを教えて頂いた。 現在のUnityにデフォルトで入っているGUIツールがとても使いにくいため、UnityでUIを組むならNGUIが一番スタンダードなツールらしい。 参考URLWebデザ…

[Unity] MonoBehavior

今日はMonoBehaviorについて説明を受けたので改めて整理してみた。 MonoBehaviorというのはUnityのScriptでのベースとなるクラス。JavaScriptでは自動的にMonoBehaviorのクラスになるし、C#の場合もデフォルトで継承された状態になっている。 決まったタイミ…

Xmarine studio導入

Unityの開発環境としてXmarine studioを使っているよと教えて頂いたので早速インストールしてみた。 Unity付属のMonoDevelopはMacだと日本入力できなくて困ってたけど、Xmarineなら可能とのこと。 (というかMono Developの最新版がXmarineらしい・・・) こ…

Unity Tutorial Beginner Space Shooter chapter 10 で学んだ事

rigidbody.angularVelocity angularVelocityとは角速度ベクトルのこと。 rigidbody.angularVelocityは、Vector3(x,y,z)軸の角速度ベクトルで、 Vector3(0,10,0)の場合、10の速度で回転する 参考URL Rigidbodyソース一覧 http://rakuen2.we…

Unity Tutorial Beginner Space Shooter chapter 9 で学んだ事

Playerが発する弾を永遠に生存させないために、弾オブジェクトを消す処理が必要になる。 チュートリアルではCube型のオブジェクトを作りゲームフィールドを囲うように設置した。 そして衝突処理自体は必要ないのでCollidarをOFFにした後、isTriggerをONにし…

Unity Tutorial Beginner Space Shooter chapter 7,8 で学んだ事

Plyaerの弾を背景にとけ込ませて表示するために、下記のShader設定をしていた。 Particles/Additive Mobile/Particles/Additive (Mobile向けでこちらの方が性能的に良い) Additiveとは日本語で加算合成のことで、複数のテクスチャが重なり合った時、重なっ…

Unity Tutorial Beginner Space Shooter chapter 5,6 で学んだ事

主にバックグラウンドの設定とPlayerの動きのScriptについて。 Quad http://docs-jp.unity3d.com/Documentation/Manual/PrimitiveObjects.html プリミティブオブジェクトの1つ クワッド プリミティブは平面と似ていますが、1 辺は 1 単位の長さであり、表面…

Unity Tutorial Beginner Space Shooter chapter 1~4 までで学んだ事

まず一番の収穫。Positionなどの数字は毎回数字を打ち込んで変化を確かめる方法よりも、数字の近くでマウスを左右に動かせば数値の増減ができる。これで大体の数字決めて、その後にキリのいい数字に変えれば良い。 以下、基本的にマニュアルから引用してます…

UnityのAnimator機能チュートリアル

Unity本を見ながらMecanimのAnimator機能を触ってみた。まずはRaw Mocap Data For MechanimをAssets storeからDL。 このアセットにはサンプルのモーションがいくつか入っているので、これを導入するだけでそれっぽいアニメーションを作れることができる。 An…