Lab 7 in Singapore

Unityでのゲーム開発、プログラミング教育、VR/AR/MR、AI・機械学習に関して。たまにシンガポールのネタも。

【Unity】uGUI:Canvas の各種描画モードを試す

現在UnityでUIを設定するには、標準搭載されているuGUIを使用するのが通常です。
シーン内に配置されたuGUIのUIオブジェクトは、Canvasと言うオブジェクトによって描画されます。よって、UIオブジェクトを使用する際 Canvasは必須となります。

今回は、そのCanvasの3つの描画モードを試してみました。
(参考: https://docs.unity3d.com/jp/540/Manual/class-Canvas.html

Canvasには以下のような3つの描画モード(Render Mode)があります。
  ・ Screen Space - Overlay
  ・ Screen Space - Camera
  ・ World Space
Unity_Canvas_Test_11


3つの描画モードを試したScene上のオブジェクトは、基本的に共通で以下のような順番で並べました。
Main Camera-青の柱Canvas(Text-Image)緑の柱黄の柱―Sub Camera
Unity_Canvas_Test_03

【 Screen Space - Overlay 】
このモードはCanvasがどこにあっても、アクティブなCameraの正面に画面の大きさにあった形で描画されます。
よって、これはScene上のCanvasの位置はあまり関係ありません。

「上:Main Cameraの映像」「下:Sub Cameraの映像」
Unity_Canvas_Test_06Unity_Canvas_Test_07

「プロパティ」
Unity_Canvas_Test_12

【 Screen Space - Camera 】
このモードは指定したCameraから指定された距離だけ離れた位置にCanvasが表示されます。
Cameraかの距離を青の柱と緑の柱間くらいにしたので、その場所にCanvasが表示されています。しかし、指定されていないCameraにはCanvasが反映されません。

「上:Main Cameraの映像」「下:Sub Cameraの映像」
Unity_Canvas_Test_01Unity_Canvas_Test_02

「プロパティ」
Unity_Canvas_Test_04

【 World Space 】
このモードはCanvasがScene上の他のオブジェクトと同じような扱いで表示されます。
CanvasはRect Transformで指定した位置に表示されるので、Sceneの表示と同じように青と緑の柱の間に現れました。
前から見るのと後ろから見るのでは映像は逆になりますが、Canvas内の各UIオブジェクトの表示順序はHierarchyで指定した順番です。

「上:Main Cameraの映像」「下:Sub Cameraの映像」
Unity_Canvas_Test_09
Unity_Canvas_Test_10

「プロパティ」
Unity_Canvas_Test_16

【Unity】Transformを使用した移動を試す

前回、Rigidbodyを使用した移動方法を試しました。
http://lab7.blog.jp/archives/2041666.html
今回はTransformを使用した基本的な移動方法を試します。

【次の瞬間の移動先を指定する】
  • position: ワールド空間の位置指定
  • localPosition: 親からの相対的な位置指定 (親がない場合、position と同じ)
  • Translate: 指定した方向と距離に移動

(参照元はUnityマニュアル。
https://docs.unity3d.com/jp/540/ScriptReference/Transform.html

青:position緑:localPosition赤:Translate


このC#ソースは以下です。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class MoveTest_2 : MonoBehaviour {
    Vector3 moveDirection;
    void Start () {
       moveDirection = transform.up;
    }
    void FixedUpdate() {
        if (this.name == "Position")
           // positionの設定
           transform.position 
= transform.position + moveDirection * Time.deltaTime;
        else if (this.name == "LocalPosition")
           // localPositionの設定
           transform.localPosition 
= transform.localPosition + moveDirection * Time.deltaTime;
        else if (this.name == "Translate")
           // Translateの設定
           transform.Translate(moveDirection * Time.deltaTime);
    }
}


【Unity】Rigidbodyを使用した移動を試す

Rigidbodyを使用した以下の4つの基本的な移動方法を試しました。

【次の瞬間の移動先を指定する】
  • position: 完全な瞬間移動
  • MovePosition: ほぼ瞬間移動(中間位置を補間できる)
【最初に速度や力を与える】
  • velocity: その瞬間の速度を直接変更
  • AddForce: その瞬間に力を加える
(参考元はUnityマニュアル。

以下のようにY軸方向に一定速度で移動していきます。
青:position緑:MovePosition赤:velocity黄:AddForce


Rigidbody Componentの設定と、このC#ソースは以下です。
Unity_Rigidbody_Test_01
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class MoveTest : MonoBehaviour {
    Rigidbody RB;
    Vector3 moveDirection;
    void Start () {
        moveDirection = new Vector3 (0, 1, 0);
        RB = this.GetComponent <Rigidbody> ();
        if (this.name == "Velocity")
            // velocityの設定
            RB.velocity = moveDirection * 1.0f;
        else if (this.name == "AddForce")
            // AddForceの設定
            RB.AddForce(moveDirection * 50.0f);
    }
    void FixedUpdate() {
        if (this.name == "Position")
            // positionの設定
            RB.position = RB.position + moveDirection * 0.02f;
                 else if (this.name == "MovePosition")
            // MovePositionの設定
            RB.MovePosition (RB.position + moveDirection * 0.02f);
    } }



本ブログの内容

本ブログの内容に関して、まずUnityを用いたゲーム開発について
自分の備忘目的の情報や、シェアできる役立つ情報なんかを書いていきます。
徐々にプログラム教育、AIに関する内容まで広げていきたいと思ってます。
シンガポールに長く住んでいるので、そちらのネタもたまに取り上げます。

Link for Lab7 Blog in English

Lab7_Title_E2

https://blog-e.lab7sg.com/

【Game】Game App from Lab7


 Link Information of Game App from Lab7 


【Merlion Adventure2】 (for Android)
Banner_01_1024_500
( http://blog.lab7.biz/archives/15257258.html


【Kitty Adventure】 (for Android, iOS)
Kitty_Ad_Banner_02
( http://blog.lab7.biz/archives/7604856.html


【Merlion Adventure】 (for Windows)
Title_Screen_1000_500
( http://blog.lab7.biz/archives/8784429.html )


【Merlion Adventure】 (for Android, iOS)
GooglePlay_Top_2
http://blog.lab7.biz/archives/5562277.html

Game App from Lab7
GooglePlay_Top_2 (Android) GooglePlay_Top_2 (Android, iOS) GooglePlay_Top_2 (Windows) GooglePlay_Top_2 (Android, iOS)
Lab7 blog in English
Sponsored Link
Twitter プロフィール
Blog Visitors [訪問者数]
  • 累計:

PV [アクセス数]
  • 累計:

Sponsored Link