ラベル Unity の投稿を表示しています。 すべての投稿を表示
ラベル Unity の投稿を表示しています。 すべての投稿を表示

2015年10月3日土曜日

ランダムに音声再生

メモ 音をランダムで再生させる


ダメージをくらった時にランダムで再生させる
public class Script : MonoBehaviour 
{
    public AudioClip[] hitClips;

}

private void OnTriggerEnter2D(Collider2D collider2d){
        if(collider2d.gameObject.tag == "DamageObject")
        {
            var clip = hitClips[Random.Range(0,hitClips.Length)];
            AudioSourceController.instance.PlayOneShot(clip);

        }
}

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キーを押して微調整する方が早いかも

Lightingについて

Lightingで遊ぶ

Sample Assetsをインポート
https://www.assetstore.unity3d.com/jp/#!/content/21064



1.

Scene全体を真っ暗にして・・
SpotLightにLightShaftのスクリプトをつけるだけ
 この方法はDirectionalLightとSpotLightのみ(普通にHaloにチェック入れればOK)

 真ん中に黒い線が走ってしまうのはなんでだろ?
スクリプトのAttenuation curveにチェックを入れて、少しずつ光が弱くなるようにした。
 これで少しごまかせたが…







2.


こんな感じの壁のScene作成


DirectionalLightにLightShaftのスクリプトを付けて、ちょうど窓から射し込むように配置





















結果・・・


これみる感じ、黄色い四角に入ったところしかボリュームライトは出来ないみたい。

⒊IBL&LightProveのこと

・Staticにしたオブジェクトは間接光の影響を受けるが、動的のものは影響を受けない。
そのためにLightProveを設置したら動的のものにも間接光をあてることができる。

・ライトを使うよりも超軽いため、LightProbeで代用する
ただ、影や光沢といった表現を行うことができない


 できてる・・・?

IBL


DirectionalRightを削除して、オブシェクトを全部staticに。IBLのみのライティング
動的オブジェクトにこのライトをつけるには、LightProveを配置する。


上のこの方法は、屋内では使えない。本来暗いはずの室内にもIBLの影響が出てしまうから
こういう時、RefrectionProveを使う。
参考:http://tsubakit1.hateblo.jp/entry/2015/03/17/233423

RefrectionProveはレンダリング結果から反射や色をきめる。
なお、RefrectionProveの設定がBakeの場合はStaticのものしか影響されない

IBLのみ
RefrectionProve使用時
Bloom.csとScreenSpaceAmbientOcclusion.csをMain Cameraに
   これは…陰と陽を強くするものだろうか…?
   まだよく分かってない


テラシュールブログさん:http://tsubakit1.hateblo.jp/entry/2015/05/15/003739
kode80SSRのをやってみた
Assets内の「SSR.cs」「SSR.cs.meta」「Resourcesファイル」を入れれば、できるみたいだったが、なぜか「SSR.cs.meta」を入れられなかったので 元のプロジェクトを開いて作ってみた。
床に赤球が反射している。床のマテリアルのSmoothnessの数値を変更すれば、反射度を変更できる。

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に。



以上の結果・・・

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