「Unity」カテゴリーアーカイブ

『仮想事故』

【事故】

衝突事故

webGLにもアップロードしました。

サイトはこちら

轢き逃げ

【ステージ】

Racing Track VOL. 01:街灯版レーシングコース
・時間帯:埼玉県警によると夜間に事故が起こりやすい
・Track Colloider:消さないと見えない壁に阻まれる

【計測風景】

・計測機:ST, SC
・機材:VR, ハンコン(T150)

【実験結果】
・生理指標:SCは衝突前後で有意。STはn.s.
・心理指標:NA,CAは衝突前後で有意(性差はあったが, 運転免許有無はn.s.

Unityの基本

今回はUnityを使ってオンライン実験を行うことを想定したワークショップです。Unityのインストールから基本的な操作方法の学習、FPS(1人称視点)コントローラの導入、景観の作成、Web上での公開方法までを扱います。これらの動画では、以下のアセット(ソフトウェア資産)を使います。
Standard Assets (for Unity 2018.4)
AllSky Free – 10 Sky / Skybox Set
Rock package

1.Unityのインストール
開発元は、UnityHubを使ったインストールを推奨しているようなので、ここでもまずはUnityHubをインストールし、つぎにダウンロードアーカイブからUnityをインストールします。Unity にはたくさんのバージョンがありますが、ここでは2019.4.12をインストールしておくようにしてください。

2.Unityエディターを使う
視点の変更やオブジェクトの配置など、エディタ操作の基本を学びます。Unityエディターを使うにはUnityでアカウントを登録する必要があります。googleアカウントを持っている方は、それを使うこともできます。また、Visual Studio(プログラムエディタ)を使うために、Microsoftのアカウントが必要になりますので、必要に応じて用意してください。

「マウス中央ボタンドラッグ」で視点移動
「Alt+マウス左ボタンドラッグ」で視点回転
「F」キーで選択中のオブジェクトを視点の中心にする

3.FPSコントローラを設定する
FPSコントローラーを配置し、一人称視点で世界の中を動き回る方法を学びます。FPSコントローラで飛び石を渡る簡単なゲームを作成してみます。

「Ctrl+D 」でオブジェクトを複製する(Duplicate)
「Ctrl+P」でゲームモードに移行するorエディターに復帰する

4.Terrain(地形)を作成する
Unityを使った地形作成は、箱庭を作っているような楽しさがあります。動画では大急ぎで作っていますが、少し時間をかけてディテールにこだわって作っていただくと、楽しく学べると思います。青空、夕空、曇り空の3種類を作り、スクリプトで切り替えられるようにします。

5.WebGL形式でビルドして公開する
公開しないと閲覧してもらえないので、WebGL形式でのビルドは非常に重要なプロセスです。しかし、WebGL自体が比較的新しい技術ということもあり、難易度は高めです。パソコンに登録されたユーザー名や作業フォルダ名に日本語が含まれていると、ビルドに失敗する事があるようです。

自分のWebサイトをもっていない場合は、UnityRoomのようなWebGL形式のコンテンツを無料で公開させてくれるサイトを利用する事も可能です(ただし広告が出ます)。レンタルサーバーはさくらインターネットロリポップなどで年間5000円程度で借りる事ができるので、実験用にはこちらが良いと思います。

ステージセレクト

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;

public class stage : MonoBehaviour {

    // Use this for initialization
    void Start () {
       
    }
   
    // Update is called once per frame
    void Update () {

        if (Input.GetKey (KeyCode.F1)) {
            SceneManager.LoadScene ("s1");     
        }

        if (Input.GetKey (KeyCode.F2)) {
            SceneManager.LoadScene ("s2");     
        }
    }
}