Unitytipsまとめ記事~unityの小技やテクニック集~

UnityTips

ここでは、Unityの小技やテクニック集をまとめています。 

少しずつ追加していく予定です。 

スポンサーリンク

プレーンに動画を貼り付ける方法

今回は、プレーンに動画を貼り付ける方法を見ていきます。 

これは非常に簡単です。 

予めプレーンと動画ファイル【mp4の動画】を入れておいて 

その動画をプレーンにドラッグするだけです。 

動画を入れますと、インスペクターに

videoPlayerが追加されるので そこで再生速度などの設定ができます。 

プレーンに入れるとおそらく向きが逆になっているので 

プレーンのY軸を180度変えてあげればOKです。 

再生すると、このように動画が再生されていますね。

2D用のワープポイント 

2D用のワープのサンプルスクリプトです。 

ポイントとしては、 2Dなのでポジションはvector2にして 

OnTriggerEnter2D(Collider2D other)を使うことです。 

今回はトリガーが必要なので 

ゴールとかオブジェクトに イズトリガーをつけて 

このスクリプトを貼っていきます。 

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class WarpPoint : MonoBehaviour
{
    public Vector2 warpPoint;
    private Vector3 target;

    

    void OnTriggerEnter2D(Collider2D other)
    {
        target = other.gameObject.transform.position;
        target.x = warpPoint.x;
        target.y = warpPoint.y;
        other.gameObject.transform.position = target;
    }
}

オブジェクトは重ねてはいけない  

こちらの画像は2Dで壁を作っていますが 

この状態で再生してみると、 以下の画像のように 

ぐちゃって なってしまう。 

これは、オブジェクト同士が重なっていると起こる現象なので 

重ならないように設置するのがコツです。

ボタンが反応しない時の対処法 

unityroomなどでゲームをアップすると 

ボタンが反応しないことがあります。 

原因としては、主に2つあります。 

・シーンにイベントシステムが入っていない 

・ボタンの手前に他のオブジェクトが入っている

これは画像のように キャンバスのすぐ下にボタンが入っていないと

だめということです。 

順番としては、ボタンが一番上になります。

 






2D用の移動スクリプト 

2D用のコントローラーサンプルです。

これで操作ができます。 

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Con1 : MonoBehaviour
{
    public float speed = 10.0F;



    void Update()
    {
        var h = Input.GetAxis("Horizontal");
        var v = Input.GetAxis("Vertical");

        
        Vector2 direction = new Vector2(h, v).normalized;


        GetComponent<Rigidbody2D>().velocity = direction * speed;


    }
}

オブジェクトを透明にする方法 

今回はオブジェクトを透明にする方法を見ていきましょう。 

これも簡単にできます。 

まずは、プロジェクトからマテリアルを作ります。 

そして、Renderingmodeを Fadeに変更します。 

そして、アルベドをクリックしてアルファ値【A】を 

0にします。  

あとは、このマテリアルをドラッグすれば透明になります。 

下の画像だと、プレーンが透明になっていて 

その上に、キューブがある状態です。 

透明は何かを隠したいときに結構よく使いますからね。

衝突判定の基本 

衝突判定で覚えておくべきことは以下の6つです。 

・OnCollisonEnter

オブジェクト同士が衝突した時に発生します。

【ぶつかるオブジェクトにコライダーやリジッドボディをつける

 必要があります】

・OnCollisonExit 

オブジェクト同士が離れた時に発生します。 

・OnCollisonStay 

オブジェクト同士が衝突している間は 発生します。 

・OnTriggerEnter 

コライダーが他のトリガーイベントに衝突する時に発生します。 

・OnTriggerExit 

コライダーが他のトリガーイベントから離れた時に発生します。 

・OnTriggerStay 

トリガーが他のコライダーと衝突している間は 発生します。

コライダーとトリガーは機能的にはほぼ同じですが。 

設定方法が少し違います。 

トリガーを使う場合は、 衝突する側に 

コライダーとIs Triggerをつける必要があります。 

使い分ける方法ですが、範囲の中に入る場合などは 

トリガーを使っていくことが多いです。

あとは、ワープポイントを作る場合なども 

トリガーで設定していきますね。 

Cloth機能を使ってみよう 

今回は、Cloth【クロス】機能の使い方を見ていきます。 

クロス機能は知ってますかね? 

オブジェクトを布のような動きにすることができる機能です。 

これを使えば 

キャラクターの髪の毛をゆらゆらしたり 

動物の尻尾をゆらゆらしたり 

ラーメン屋の暖簾をゆらゆらしたり

カーテンをひらひらしたりできるわけです。 

それでは、今回はプレーンをゆらゆらしていきます。 

まずはプレーンを入れて

インスペクターにある Meshcolliderの凸状にチェック

そしてトリガーにも、チェックを入れます。 

そして コンポーネントを追加から 

Clothを入れます。 

Clothを入れると、自動的にskinnedも入ります。

で次にですね。 

Clothの右下にある緑矢印のアイコンを選択します。 

そうすると、 シーンビューにクロスのセルフコリジョンというメニューが 

出てくるので、 そこで選択を選びます。 

そして、 囲みたい所をドラッグして選択していきます。 

そして囲んだら すぐ下にある 

セルフコリジョンとインターコリジョンにチェックを入れます。 

この画像ですと、 プレーンの上側だけを囲んでいます。 

囲む所は、固定したい所になります。 

囲んだ所は青い点に変わります。

つまり、囲んでいない所がゆらゆらするということです。

ではこれで再生してみましょう。 

この状態でプレーンを動かしてみると 

画像のように、 プレーンが ゆらゆらしていると思います。 

このようになっていれば成功です。 

※注意点としては、 1回囲んでしまうと、ポインターが消えてしまうので 

また設定をやり直す必要があるんですよね。 

Reflectionprobeを使ってみよう 

ここでは、リフレクションプローブの使い方を見ていきます。 

略してリフプロは、周囲のあらゆる方向の球面図をキャプチャできるものです。 

それを利用すれば、 鏡のような反射オブジェクトを作れます。 

まずは下準備として 

プレーンとキューブと Unityちゃんを入れておきます。 

【キャラクターならなんでもOK】

キューブは長方形にして、 Unityちゃんの前に配置しておきましょう。 

次にマテリアルを作ります。 

マテリアルのインスペクターで 

メタリックとスムースレスを1にします。 

そして、マテリアルをキューブに貼り付けていきます。 

では次に 空のゲームオブジェクトを作って 

コンポーネントを追加から、Reflectionprobeを入れていきます。 

設定は画像のようにしていきます。 

タイプはリアルタイム 

解像度は、1024

HDRにチェックを入れます。 

あとは、キューブのサイズや位置を微調整すれば 

Unityちゃんが反射しているように見えます。

表示と非表示のサンプルプログラム 

こちらのプログラムはもし Playerタグと当たったら 

オブジェクトを表示するというプログラムです。 

表示する場合は、true 

非表示する場合は、falseを入れます。 

今回は、OnTriggerEnterを 使っているので 

オブジェクトには、イズトリガーを入れる必要がありますね。 

using UnityEngine;
using System.Collections;
 
public class Wall : MonoBehaviour {
 
    public GameObject ball;
 
    void OnTriggerEnter(Collider other){
        if(other.gameObject.CompareTag("Player")){
 
            ball.SetActive(true);
        }
    }
}

太陽を動かす方法 

太陽を動かすには、 DirectionalLightを動かしてあげれば 

連動して、 太陽も動きますので。 

DirectionalLightに 以下のようなスクリプトをつけると 

太陽が回って、24時間の動きになります。 

X軸だけ変えてればOKです。 中の数字はお好みで設定してください。

using UnityEngine;
using System.Collections;

public class San : MonoBehaviour {

	void Update () {
		
		this.gameObject.transform.Rotate(new Vector3(12, 0, 0) * Time.deltaTime);
	}
}

コンポーネントをコピーする

既にご存知かと思いますが、 コンポーネントは 

コピーして、貼り付けもできます。 

・・・ の所をクリックすると、 コンポーネントをコピーができます。 

これのほうが、いちいち設定しなくていいので 楽になりますね。

プレビューパッケージを使う方法

編集から プロジェクト設定を開きます。 

そして、 パッケージマネジャーを開いて 

プレビューパッケージに チェックを入れると 

プレビュー版も使えるようになります。 

再生モードを早くする方法 

編集からプロジェクト設定を開きます。 

エディターを開いて、 再生モードの開始時オプションにチェックを入れます。 

これをすることで、 再生モードがかなり早くなるので 

重たいアセットでも、すぐにプレイすることができます。 

重たいアセットで試してみるとわかりますが 

5倍ぐらいスピードが違います。

これは必須の設定なので、 必ずONにしておきましょう。

コメント

タイトルとURLをコピーしました