web-dev-qa-db-ja.com

ゲームオブジェクトを統一して透明にする方法

私のゲームでは、ゲーム中にプレーヤーが特定のオブジェクトと衝突した場合、実行時にスクリプトを作成して、プレーヤーオブジェクトを2秒間透明にしたいのですが...可能ですか?

6
Akari

衝突をチェックします。必要な衝突がトリガーされたら、透明度を変更できます。

GameObject g;

// 50% Transparency.
g.renderer.material.color.a = 0.5f; // a is the alpha value.

 // 100% Transparency.
g.renderer.material.color.a = 1.0f;

これを実行して、プログラムを待機時間にすることができます: http://docs.unity3d.com/Documentation/Manual/Coroutines.html

例がまさにあなたの質問であることに気付くでしょう。

10
user2085599

この拡張方法を試してください:

public static void ChangeAlpha(this Material mat, float alphaValue)
{
    Color oldColor = mat.color;
    Color newColor = new Color(oldColor.r, oldColor.g, oldColor.b, alphaValue);         
    mat.SetColor("_Color", newColor);               
}

次に、次の方法で呼び出すことができます。

gameObject.renderer.material.ChangeAlpha( Your Alpha Value );
4
MichaelTaylor3D

これを呼び出すオブジェクトには、透明度をサポートするシェーダーが必要です。 Unity5では、標準のシェーダーを使用する場合、アルファ値を操作できるようにするには、明示的に「透明」に設定する必要があります。ここに画像の説明を入力してください

ここにリンクの説明を入力してください

アルファ値が0.0fから1.0fに変化するフロートであることも明らかです。たとえば、設定

var other : GameObject;
other.renderer.material.color.a = 0.5; // 50 % transparent
other.renderer.material.color.a = 1.0; // 100% visible

オブジェクトを50%透明にします。

unity 5で私にとって(オブジェクトを非表示にする)最善の方法は、レンダリングモードで非表示にしたいすべてのゲームオブジェクトのマテリアルを透明に設定することでした。次に、アルベドの横にある小さな丸いボタンをクリックし、UIMaskと呼ばれるものが見つかるまで、表示されたアイテムのリストを下にスクロールします。それを強調表示してEnterキーを押します。初心者のimなので、さらに説明が必要かどうか尋ねてください。

*これはハードフィックスであり、コードでこれを変更できるかどうかわからないことに注意してください。

**これは、プレーヤージャンプ機能が含まれているロールアボールの境界のために作成されました。壁を見えなくする必要がありますが、空中のプレイヤーオブジェクトを停止するために衝突可能にする必要があります

0
Icarus_XXII