[Unity]スクリプト(C#)からオブジェクトを透明にする方法・Mesh Renderer(メッシュレンダラー)のチェックを外す方法(画像付き)

オブジェクトを無くすのではなく見えなくする方法を解説していきます。

動画では銃でゾンビを倒すゲームがありますが、銃をリロードするたびに銃が表示されなくなっています。
これのやり方を解説していきます。

インスペクターのセットアクティブをオフにしてもいいですが、それだとこのオブジェクトもチェックが外れ、色々障害が出るので別の方法で試していきます。

まずは消したいオブジェクト(画像だと銃のオブジェクト)を選択し(画像1番目の赤丸)、右上の「レイヤー」をクリックします(画像2番目の赤丸)

そして一番下の「レイヤーを追加」をクリックします。

すると画像右側のような画面が開くと思うので、どこでもいいので空欄の箇所に好きな文字を入力します。画像だとレイヤー6という箇所に「Gun」と入力しています。

これでレイヤーに今追加した名前が追加されます。

次にゲーム内に配置しているカメラをクリックし(画像1番目の赤丸)、「カリングマスク」という項目をクリックします(画像2番目の赤丸)。するとレイヤーの名前が全て表示されるので、今追加したレイヤーのチェックを外します(画像3番目の赤丸)

これでこのレイヤーが付いているオブジェクトがカメラに映らなくなります。試しにカメラに映る適当なオブジェクトのレイヤーを変更して確認してみてください。

あとはスクリプト内で透明にしたいオブジェクトのレイヤーを自由に切り替えられるようにすればいいだけです。
やり方は下のような感じですね。

まずはGameObjectを追加し、「Gun.layer = LayerMask.NameToLayer(“Gun”);」というコードを打つと、 aというオブジェクトのレイヤーが「Gun」になります。Gunはカメラには映らないので透明になります。

デフォルトでオブジェクトは全て「Default」というレイヤーになっているので、「Default」にすればカメラに映るようになります。

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

public class スクリプト名 : MonoBehaviour
{
    public GameObject a;
void Start()
    {
        
    }
void Update()
    {
      a.layer = LayerMask.NameToLayer("Gun");//レイヤーを「Gun」にする
        a.layer = LayerMask.NameToLayer("Default");//レイヤーを「Default」にする
    }
}

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です