LoginSignup
0
0

More than 1 year has passed since last update.

Unityの冒険02 -基礎編-

Posted at

13.カメラを押した時に、非表示にしてみよう

Unityで大切なカメラについてやっていきましょう。カメラはMain Cameraというゲームオブジェクト名で最初から入っています。

try13.cs
public class TryCode:MonoBehaviour
{
    void Start()
    {
        //Main Cameraごと非アクティブにしてみる
        gameOjbect.SetActive(false);
    }
}

もちろん、Main Cameraゲームオブジェクトに対して非アクティブにする方法もありますが、今回はコンポーネントの非アクティブにする方法をやってみましょう。

try13-2.cs
public class TryCode:MonoBehaviour
{
    void Start()
    {
        //Camera型の変数名cameraを作成し、Cameraコンポーネントを取得してみる
        Camera camera = gameObject.GetComponent<Camera>();

        //camera変数に対してチェックボックスを外す
        camera.enabled = false;
    }
}

ちょっと難しいかも。
まずはカメラコンポーネントを非アクティブにするためには、2行だけで実装できます。

gameObject.GetComponent()
このゲームオブジェクトについている -> Cameraコンポーネント
という感じ。

もし、このゲームオブジェクトにCameraコンポーネントがなかったらエラーが起きます。

14.テキストを使ってみよう

ゲームをする際欠かせないのがUI。
その中でもテキストを使って、メッセージを出したり、得点やスコアを表示したりします。

try14.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using TMPro; //追加する

public class TryCode:MonoBehaivour
{
    //TextMeshProUGUI型の変数を宣言する
    private TextMeshProUGUI message; 

    void Start()
    {
        //方法1 : 変数にTextMeshProUGUIコンポーネントを取得する
        message = gameObject.GetComponent<TextMeshProUGUI>(); 

        //方法2 : thisを使う
        message = this.GetComponent<TextMeshProUGUI>();
 
        //変数に文字列を入れる
        message = "Hello world Unity"; 
    }

    void Update()
    {

    }
}

今回はUnityの最新版を意識した書き方をしました。Textコンポーネントを使う方法もあり、参考本でもTextコンポーネントを使用しているのもありますが、Unity側はレガシー版として扱っているみたいです。

書き方として、方法1と方法2を紹介しました。どちらも同じ意味になります。

15.Rigidbodyでゲームオブジェクトを落下させてみよう

try15.cs
public class TryCode:MonoBehaviour
{
    //Rigidbody型の変数を宣言する
    Rigidbody rb;    

    void Start()
    {
        //変数にRigidbodyコンポーネントを取得する
        rb = gameObject.GetComponent<Rigidbody>();

        //関数を使ってX方向へ力を与える
        rb.AddForce(100, 0, 0);
    }
}

ゲームオブジェクトにRigidbodyコンポーネントをつければ、Unityの再生ボタンを押したときに落下するのは確認できます。今回はもう一個踏み込んで、Rigidbodyコンポーネントで遊んでみましょう。

16.Colliderコンポーネントをつけて衝突判定をしてみよう

ヒエラルキーウィンドウで、新しく球や、キューブを作成してみましょう。作成されるとSphere Collider、キューブなら Box Colliderというコンポーネントがついてきます。

try16.cs
public class TryCode:MonoBehaviour
{
    void Start()
    {
    }

    void Update()
    {
    }

    //新しく関数を作る(名前も同じように書いてね)
    void OnCollisionEnter()
    {
        Debug.Log("地面にあたったよ");
    }
}

今回は、「球が地面に触れたらコンソールウィンドウにメッセージを表示する」というのをやってみました。もちろんん、地面はPlaneというゲームオブジェクトを作成し、Mesh Colliderというコンポーネントがついています。

17.他のゲームオブジェクト名を取得してみよう

このまま続きとして行ってみましょう。

try17.cs
public class TryCode:MonoBehaviour
{
    void Start()
    {
    }

    void Update()
    {
    }

    //引数ありの、新しく関数を作る
    void OnCollisionEnter(Collision collision)
    {
        Debug.Log("君は" + collision.gameObject.name + "だね?");
    }
}

引数を指定すれば、どのColliderのゲームオブジェクトに触れたのかを調べることができます。
ここまでできれば、ゲーム要素が増してきて楽しくなると思います。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0