13.カメラを押した時に、非表示にしてみよう
Unityで大切なカメラについてやっていきましょう。カメラはMain Cameraというゲームオブジェクト名で最初から入っています。
public class TryCode:MonoBehaviour
{
void Start()
{
//Main Cameraごと非アクティブにしてみる
gameOjbect.SetActive(false);
}
}
もちろん、Main Cameraゲームオブジェクトに対して非アクティブにする方法もありますが、今回はコンポーネントの非アクティブにする方法をやってみましょう。
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。
その中でもテキストを使って、メッセージを出したり、得点やスコアを表示したりします。
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でゲームオブジェクトを落下させてみよう
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というコンポーネントがついてきます。
public class TryCode:MonoBehaviour
{
void Start()
{
}
void Update()
{
}
//新しく関数を作る(名前も同じように書いてね)
void OnCollisionEnter()
{
Debug.Log("地面にあたったよ");
}
}
今回は、「球が地面に触れたらコンソールウィンドウにメッセージを表示する」というのをやってみました。もちろんん、地面はPlaneというゲームオブジェクトを作成し、Mesh Colliderというコンポーネントがついています。
17.他のゲームオブジェクト名を取得してみよう
このまま続きとして行ってみましょう。
public class TryCode:MonoBehaviour
{
void Start()
{
}
void Update()
{
}
//引数ありの、新しく関数を作る
void OnCollisionEnter(Collision collision)
{
Debug.Log("君は" + collision.gameObject.name + "だね?");
}
}
引数を指定すれば、どのColliderのゲームオブジェクトに触れたのかを調べることができます。
ここまでできれば、ゲーム要素が増してきて楽しくなると思います。