ラベル ゲーム制作 の投稿を表示しています。 すべての投稿を表示
ラベル ゲーム制作 の投稿を表示しています。 すべての投稿を表示

2015年10月21日水曜日

UE4を始めてみた

オブジェクトの配置

左側のメニュー

「基本」と「BPS」にスフィアやらコーンやらがある。
BPSって何…? 多分バイナリ空間分割(Binary space partitioningかな?https://ja.wikipedia.org/wiki/バイナリ空間分割


オブジェクトの大きさが、基本の方は小さく、BPSの方は大きい。BPSはポリゴンみたいに幾つかのパーツに分かれて出来てる。そのため、Materialをつけたい時は、それ一つずつにドラッグ&ドロップしなきゃならない。が、基本は後付けでも1発で可能。

この二つをどうやって使い分けるのかはその内分かってくるんだろうなー。


Materialを作成

1.左下の「コンテンツブラウザ」>「新規追加」>マテリアル
2.作成したマテリアルをダブルクリックして、「マテリアルエディター」を開く
3.右側の「パレット」から「パラメーター」の「VectorParameter」をグラフ上にドラッグ& ドロップ
4.色を変更
5.今回は一番上の白い○から基本色にノードをつなげる
6.「マテリアルエディター」の保存をクリックで保存する

作成したマテリアルを選択した状態で、BSPのボックスをドラッグ&ドロップ
そしたら、マテリアルに設定した色のボックスが誕生!

・・・Unityに比べて面倒臭くないですかね


Textureを入れてみる

「マテリアルエディタ」のメニューの「ファイル」>「アセットを開く」
テクスチャの一つを選択し、ドラッグ&ドロップ

マスクをかけてみる

2種類のtextureをインポート。もちろん同じ柄。一つはマスクになるためのテクスチャ
何も選択されてない状態で、「マテリアルエディター」の「グラフ」の「詳細」に、「ブレンドモード」を「Masked」を指定。
そうしたら、ノードの部分に「オパシティマスク」が追加される。
マスク用のテクスチャをこれに繋げる。もう一つをベースカラーに。

Prefab(みたいのを)作成

メニューから「保存」で保存する。

以上。・・・ちょっとピンとこない


カメラ配置&プレー

Unityみたいに最初からカメラが配置されてるわけではないみたい。

「モードパネル」>「全てのクラス」>カメラ

このまま再生しても、何も表示されない。ので、もう一つ設定が必要。

「カメラ」>「詳細」>「オートプレイヤーアクティベーション」のAuto Activathが「Disable」になっているので、「Player 0」を選択

ツールバーからビルド。そしてから再生



スカイボックス(みたいのを)

最初はスカイは表示されてないが、一度プレイしてみれば、スカイが出現

アウトライナ」>「Sky Sphere」を選択し、マウス右クリックで太陽のある位置を表示

太陽の明るさを設定

「アウトライナ」>「Sky Sphere」の「Default」にある「Sun Brightness」の値を変更

雲の流れの速さを設定

プレイを押すと雲が流れだす。が、結構遅い。

上記と一緒の「Default」>「Cloud Speed」の値を変更

雲の量を設定

Cloud Opacityの値変更

Atmospheric Fogの設定

光の反射具合をきめる設定
「Sun Multiplier」は空の青さの設定。濃い青か薄い青か の設定。
「Distance Offset」は空の暗さの設定。青空か暗い空か

夕焼けを作る

「アウトライナ」の「Light Source」をダブルクリック
回転ツールで、白い矢印を地面と平行くらいまで回転させる。
そしてビルド。すると赤い空が出来上がる。

(注)Light Sourceを移動させた後は、ビルドしないと反映されない

Skyに関しては、Unityよりは色々いじれそう。


マーケットを使う

UnityでいうAssetStore

今回は、GameTextures Material Pack をダウンロード
ランチャーを開いて、インポートしたいプロジェクトファイルを選択して、インポート

ファイルのMaterialの一つを選択して、BSPのSphereをドラッグ&ドロップ
そしたら、選んだMaterialの柄のスフィアが出来上がる。

しかし、全然球の形じゃない!
「ブラシ設定」の「Tessellation」の値を5に

2015年9月25日金曜日

Ambient Occlusionを設定してみる

http://tsubakit1.hateblo.jp/entry/2015/09/18/013000 を参考


Ambient Occlusion とは
 物の接地感を出す → 境目がはっきりする

Lighting とかの設定

簡単に家のオブジェクトをおいて、ベイク

今はstaticにした場合だが、動的の時も擬似的にやる方法があるみたい。
それは、リンク先のテラシュールブログさんで…

2015年9月10日木曜日

LightをBakeする

Bakeはここを参考に
http://tsubakit1.hateblo.jp/entry/2015/05/05/133903
http://tongullman.blogspot.jp/2015/05/unity5.html



Bake中に途中でエラーを発してそれ以上動かなくなるということがあった。
その時出たエラーの対処法は以下を参考にしました。
http://cubic9.com/Devel/Unity/Unity5%A4%C7Lightmap%A4%CEbake%A4%ACLight%20Transport%A4%C7%BB%DF%A4%DE%A4%EB%B7%EF%A4%CE%C2%D0%BD%E8/



Lightingの設定項目の見方
http://indie-du.hatenablog.com/entry/2015/06/02/214909
 GIは
 http://indie-du.hatenablog.com/entry/2015/06/04/205556
 ライトマップを焼くのにこれだけは設定しろ!
 http://indie-du.hatenablog.com/entry/2014/12/02/202230

2015年9月2日水曜日

SkyBoxのSunの話


Sunの部分にLightを入れると、skyboxに太陽ができる。
その太陽を設定したい時は、skybox/Procedural
上から・太陽の大きさ
   ・大気圧(薄い=黒い 厚い=赤い)
   ・空の色合い
   ・地面の色
   ・露光(輝度)


角度により、太陽の色が変化する










LightにLens Flareのコンポーネントを付ける
Directionalにチェックを入れるとフレアができる

















Terrainでフィールドを作る

これ(左から2番目)で整地できる

Heightで高さを決める。それが地面全体の基準の高さになる
・道



Terrainの地面からしか、木や草をブラシで生やすことができない。だから、草や木が生えそうなところはあらかじめ地を作っておく。(埋めこんでおく)
今回のものでいえば、横の石壁はオブジェクトだが、そこから草が生えているように見せるために石の中にもTerrainの地面を入れておく。

2015年8月30日日曜日

キャラクター移動の基礎

 ⒈アニメーションの話 

 オブジェクトのスピードが一定以上の時、「走る」アニメーションを
 SetFloat・・はTrigger、Boolとかでも可 

  private Animator animator;

    // Use this for initialization
    void Start () 
    {
        animator = GetComponentInChildren<Animator> ();
    }


  // Update is called once per frame
    void Update () 
    {
        animator.SetFloat ("Speed"20f);
    }




⒉使い回せそうな移動スクリプトの話


CharacterController controller;
    public float MoveSpeed = 7f;
    public float RotationSpeed = 360f;

    // Use this for initialization
    void Start () 
    {
        controller = GetComponent<CharacterController> ();
    }
    
    // Update is called once per frame
    void Update () 
    {
        float h = Input.GetAxis ("Horizontal");
        float v = Input.GetAxis ("Vertical");

        var direction = new Vector3 (

              h * MoveSpeed
              0f
              v * MoveSpeed);
        if(direction.sqrMagnitude > 0.01f)
        {
            Vector3 forward = Vector3.Slerp(

                  transform.forward
                  direction
                  RotationSpeed * Time.deltaTime);

            transform.LookAt(transform.position + forward);
        }
        controller.Move (direction * MoveSpeed * Time.deltaTime);


2015年8月8日土曜日

iTweenでアニメーション

Asset Store


iTweenでNPCが巡回する


NPCオブジェクトにI Tween Event スクリプトを
Nameのところにイベント名を入力
x, y, z の座標にチェック 数字を入力
time で上の座標まで移動する時間を指定
looptype でloopの仕方を指定

iTweenEvent.GetEvent(gameObject,"イベント名").Play();
iTweenEvent.GetEvent(gameObject,"イベント名").Stop();
スクリプトではこれで制御可能


ActionScript入門Wikiで

2015年8月6日木曜日

QuickSetObjectPlacerを使ってみた

Asset StoreのQuickSetObjectPlacerを使ってみた

  1. Asset内の”_QuickSet”のprefabをScene上に配置
  2. セットしたいObjectをScene上に
  3. ”_QuickSet”のAdd an object group を押す
  4. Add a game object を押す。そこに、連続して配置したいオブジェクトを選択
  5. 左に出るチェックボックスにチェックを
  6. START OBJECT PAINTING を押す。

 これでScene上クリックで、そこに選択したオブジェクトを連続配置が可能。


この場合、Hierachy上に個別に配置される。グループでまとめたい時は⑥を押す前にGroup Name と Group Parent を設定してやるといい。


この方法で配置した場合、マウスクリックの位置になるため、バラバラの座標になる。
だから、Edit>Snap Settings で一挙座標を整数値に変えることが出来る。

が、Vキーを押して微調整する方が早いかも

2015年8月5日水曜日

Shader学んだことまとめ

再生させたらオブジェクトの色を変える

プロジェクト内でやったこと
・オブジェクト一つの色を変更
・Sceneに存在する全ての色を無色に(カメラにスクリプトを)
 transform.GetComponent<Camera> ().SetReplacementShader (nightvisionShadernull);
  で全てのシェーダーを差し替えできる


ソナーのようなことができるAssetを使ってみた

・オブジェクトを配置して、Asset内に入っていたスクリプトをカメラにつけた

結果… 赤い線が走っているだけのように見えた。
・インターバルの感覚、スピードの調整
・ソナーを出す時に、画面全体の色を黒く。機械視点で見ているような
・カメラを複数置く

とかすれば、ソナーっぽくなるかな?今度やってみる

2015年8月3日月曜日

綺麗なScene切り替え

テラシュールブログさんのhttp://tsubakit1.hateblo.jp/entry/20140505/1399289078やってみた。

FirstSceneには
 ・cube1つ
 ・Create Empty(GameController)に作ったFadeというスクリプトを
          スクリプト内のLodeLevelには次のScene名(SecondScene)を
 ・Inport Packageに入っている、FadeCameraを
SecondSceneには
 ・Cube2つ

Fade.cs
using UnityEngine;
using System.Collections;

public class Fade : MonoBehaviour 
{        
    void Update ()
    {
        if (Input.GetKeyDown (KeyCode.Space)) 
        {
            LoadLevel ("ScondScene");
        }
    }

    void LoadLevel (string name)
    {
        float time = 1// フェードアウト時間
            
        // フェードアウト
        FadeCamera.Instance.FadeOut (time, () =>
                                     {
                
                // フェードアウト完了後の処理(画面は真っ暗)
                Application.LoadLevel(name); // シーン遷移
                
                // フェードイン
                FadeCamera.Instance.FadeIn (time, () =>
                                            
                                      {
                    
                    //  フェードイン完了後の処理
            });
                
            });
            
        }
        
    }




ただ、自分の設定が悪いのか微妙だなー

AseetStoreのGame Jam Menu Templateを使って見る

AseetStoreのGame Jam Menu Templateを使って見る


1.Prefabを二つ配置。
2.StartOptionスクリプトのChangeSceneにチェックをいれる。そしたら、BuildしたSceneの1に移る。

簡単にタイトル画面が作れるからいいですね。・・・地味ですが

2015年8月2日日曜日

Lux2.0で遊んでみる

Lux2.0で遊んでみる

雨を作ってみる

床のオブジェクトに、Setup Lux2.0のスクリプトを。以下数字は適当に…


床のマテリアルはこんな感じ…

これだけで、

こんな感じに。

Water FX Pack というAssetを組み合わせると良い感じに雨降っているようになる!
ただこのアセットの雨の、FX_Spit(水しぶき)は微妙? ないほうがいいかも

土砂降りにしたい時はprefabを複製して、同じ場所に配置すればいい





これで、LuxでIBLができるかも。Lux2.0でのやり方はまだよく分からない。

2015年8月1日土曜日

学んだことをメモするだけ


動く床を作りたい

public class AutoMoveScript : MonoBehaviour 
{    
    Vector3 BasePosition;

    private float offset = 30f;

    // Use this for initialization
    void Start () 
    {
        BasePosition = transform.position;
    }
    
    // Update is called once per frame
    void Update () 
    {
        //sinカーブ 掛ける値を大きくすると周期が短くなり、小さくすると周期が長くなる。
        transform.position = BasePosition + Vector3.forward * Mathf.Sin(Time.time + offset);
    }
}

最初Update内を、transform.position = transform.position + ・・・

ってやってたが、移動する床の中心がズレた。それもそのはず、自分の座標に足されていくからそうなるよねー



セーブポイント(チェックポイント)を作りたい

public class CheckPointCS : MonoBehaviour 
{
    public GameObject target;
    public ParticleSystem savefin;
    public ParticleSystem respawn;

    Vector3 checkposition;

    private bool checkable = false;

    // Use this for initialization
    void Start () 
    {
    
    }
    
    // Update is called once per frame
    void Update () 
    {
        if (checkable
        {
            if (Input.GetKeyDown ("1")) 
            {
                target.transform.position = checkposition;

                respawn.Play();
            }
        }
    
    }

    void OnTriggerEnter(Collider collider)
    {
        if(collider.tag == "Player")
        {
            checkable = true;

            checkposition = transform.position;
            Debug.Log("getcheck");

            savefin.Play();
        }
    }
}

プレイヤーがセーブポイントのトリガーにあたったら、その座標を取得。1のキーが押されたら、取得した座標に出現する。
 おまけでパーティクルを使って、セーブポイントに着いた時、セーブポイントに出現した時を演出


パーティクル

スクリプトから再生

public ParticleSystem 変数名;
で、パーティクルを保持

変数名.Play();
で、再生。

収束エフェクトの作り方

収束エフィクト(チャージしているような)
  1. ShapeをSphere(球)に
  2. Emit from ShellをONに。球面からパーティクルが出るようになる
  3. Start SpeedをRadiusのマイナスの値にする。マイナスの数字を入れることによって逆方向に。この場合球の中心に
  4. Rateを100に(パーティクル発生頻度)
  5. Render ModeをStretched Billboard(形状を変化させることができる)
  6. Length Scaleを0.5に。縦長にすることができる

2015年7月22日水曜日

Lightingについて--Emissionとか

Emission関係

http://tsubakit1.hateblo.jp/entry/2015/06/24/055130テラシュールブログさん のまとめみたいな

光る材質を作成することができる

暗闇でも色を失わず暗くならない

Emissionを持つオブジェクトがstaticの場合は自身の色を保持するだけではなく、周囲のstaticオブジェクトに対して光源として機能するようになる

色や輝度を変化させることによって、光源の範囲も変化する。だけど、座標移動や変化をすることはできない。

動的オブジェクトに影響を与えたい時はLightProbeを。ただしこの場合は影が表現されない。だからShadowProjectorで影を表現するといった工夫が必要。

物体の周囲に光が滲んで見える表現。光が滲む表現はbloomを使用。


InportPackageのEffectに含まれているもの

InportPackage>Effect
から気になったのを抜粋・・・

bloom

Threshold(閾値)とIntensityを調整する。カメラのHDRにチェックを入れる

閾値…ある刺激によってある反応が起こる時、刺激がある値以上に強くなければ、その反応は起こらない。その限界値のこと。
だから、光って欲しくないオブジェクトにはTreshholdの値を大きくすればいい…かも
HDRの高い値を出すには、Treshholdの値を大きくすればいい?
 ・・   ちょっとTreshholdの意味が分からない

カメラにstanderdAsset EffectのBloomスクリプト





Edge Detection

オブシェクトの輪郭が強調される。床の位置とかがわかりやすくなる。
が、なんか漫画っぽくなる気が…

色々設定変えられるみたいだが、そこはまた今度


Globalfog

LightingについているFogとは別物?のような気が

こっちはカメラに映る範囲をfogで包むのかな?


2015年7月4日土曜日

Lightingについて

ライトについて

部屋を真っ暗にしたい場合

・[Window]->[Lighting]
 Ambient Intensityを0に

・背景色を黒に
 カメラの背景色を変更

・Skyboxを外して、background colorを黒にしたり

ライトをいっぱい置く場合

ポイントライトはpixel right count以上置くと優先度の低い順に雑になる。初期値はモバイル一個。PC4個。
CameraのRenderPathの設定をDeferredにするか、Pixel Light Countの数を増やせばOK


・ライトを焼く
自分で書くよりもこれみた方が早い 詳しい 分かりやすい

光るものを作る時

テクスチャのemissionを弄る!

この場合、ボタンの赤いテクスチャと、薄青のテクスチャを2。

背景のボードの灰色部分を少し見せるために0.3に。



以上の結果・・・

こうなった。コントロールパネルのボタンがいい具合に光り、灰色のボードの部分もうっすら見えているんじゃないかと思う。

2015年6月14日日曜日

ピクミンみたいのなのを作成中・・・①


・まず、すごい初歩的な所から
 transform.Translate は衝突のない位置の移動なので、通過点にコライダーがあっても貫通してしまう。
 これになぜか引っかかってました…



・キャラ同士がぶつかる、乗り上げることをしないようにするには
レイヤーを設定して、
Edit->Project Settings->Physics 2Dで開き、Layer Collision Matrix


・変数やメソッドをpublic static にしておくと、その世界唯一の物になってどこからでも使えるようになる。世界唯一なので、住所を指定しなくても、名指しだけで使用可能。
http://myoujing.wpblog.jp/2014/06/760/さんより完全コピー
 この例でいけば、どこの他所のスクリプトからでも
test1.HealthPoints -= 5;
と書くだけで変数HealthPointsは95になるし、
test1.Attack();
と書くだけでAttackメソッドを実行させることができる。



・SendMessageの使い方

public GameObject ○○; メッセージを送りたい所の名前

○○.SendMessage("他のオブシェクトについてる関数名とか");



・ON と OFF のスイッチ
以下のスクリプト、if文の中身を逆さまにしたらずっとtrueだったのでメモ

if (ON == true
        {
            if (Input.GetKeyDown (KeyCode.Space)) 
            {
                ON = false;
            }
        }
        else
        {
            if(Input.GetKeyDown (KeyCode.Space))
            {
                ON = true;
            }
        }