Lab 7 in Singapore

Unityでのゲーム開発、プログラミング教育、AIに関して。たまにシンガポールのネタも。

【Cinema】「Lucky Boy」

先日観たシンガポール映画の紹介をします。タイトルは「LUCKY BOY」。


(本作のTrailer)

主演はシンガポールで大ヒットしたシンガポール映画「Ah Boys to Men」、「The Lion Men」でシンガポールのトップ俳優に仲間入りしたWang Weiliang。
(シンガポールで大ヒットと書いても日本では誰も知らない映画なので、また別の機会に過去の有名なシンガポール映画なんかも本ブログで紹介していきます。)
この主演のWang Weiliang、お笑い芸人的な雰囲気をかもし出している彼は、どんな映画にもコメディ的なエッセンスが含まれているシンガポール映画にはとても適役な役者です。シンガポール特有の英語混じりの中国語を早口で話すと、これぞThe Singaporeanと言う感じがします。きっとこれからも活躍し続ける役者かと思います。もちろんシンガポールで。

この「LUCKY BOY」の映画自体は…、そんなに観ることをお薦めするほどでもないです。(どうせ日本では観る機会はないでしょうからネタばれ含んで書きます。)

内容は小さいころからUnluckyだった少年が最後はHappy Endを迎える話し。と言っても、Unluckyもいろいろすれ違い等で小学校のときから好きな子とは結婚できず、Happy Endは離婚後の彼女と最終的に結婚できたと言う話。まあそれだけの話です。

少し気になったのは、その主人公の好きな女の子が最初に結婚したのは金持ちの日本人と言う設定…。会社を経営していて仕事が忙しすぎてかまってあげられず離婚となりましたと言う話です。そのため、ちょくちょく日本語や日本語の挿入歌が出てきました。彼女が日本語で「私の誕生日だよ。お祝いしてよ。」、日本人の旦那「今忙しいんだ。黙っていてくれ。」てな具合で離婚を迎えます…。

シンガポール映画ネタ、これからもどんどん続けていこうかと思います。

映画について

このブログのメインの内容にするつもりはないのですが、趣味の1つの映画に関しても書いていこうかと思います。最近は忙しく回数が減っていますが、以前は週に1,2回はシンガポールの映画館に足を運んでおりました。(たまにマレーシアまで映画を観に行ってました。シンガポールよりも安いので。)

好きな映画は…、もともとSF好きなのでSF映画が特に好きです。SF映画に関わらずホラー以外は何でも観ます。最近は台湾の青春映画なんかも好きです。台湾の高校生活を取り上げたものなんかは今の日本のものより自分達世代の高校時代に近く感情移入できますね。

あと、シンガポールに長く住んでいるのでシンガポール映画もよく観ます。小さな国のシンガポールの映画は、低予算作成で馴染みのある場所が必ず出るような映画です。さながら日本で地元のエリアをテーマにした映画を観ているようでとても親しみを感じられます。

このブログの映画に関する話は、SFなどの多くの人達が発信している情報ではなく、日本では観る機会のないシンガポール映画情報を提供していこうかと思っています。
(日本でシンガポール映画情報の需要があるかどうか分かりませんが…。)

【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に関する内容まで広げていきたいと思ってます。
シンガポールに長く住んでいるので、そちらのネタもたまに取り上げます。

【Game】Game App from Lab7

Link Information of Game App from Lab7


【Merlion Adventure】 (for Android, iOS)
GooglePlay_Top_2
http://blog.lab7.biz/archives/5562277.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 )

Game App from Lab7
GooglePlay_Top_2 (Android, iOS) GooglePlay_Top_2 (Android, iOS) GooglePlay_Top_2 (Windows)
Contact [お問い合わせ]
Blog Visitors [訪問者数]
  • 累計: