現実世界で実験を行うと時間やコストや場所や配慮等、様々な問題が発生。
2022年の7月現在、ゲームエンジンのUnity、Unreal等の高度なワールドシミュレーションシステム(物理演算等)が台頭、ほぼ電気代+グラボ搭載PC等のコスト、若干のアカウント等の手続きで利用可能。
便利。いい時代。さっそく利用。
本記事はゲームエンジンを利用し、様々なおもしろ理論の利活用を焦点に色々な実験結果の備忘録。
あわせてオブジェクトにアタッチするだけで完結プログラムチップを公開。
アタッチしたオブジェクトの中心座標から、指定した弾丸オブジェクトをZ軸方向にインパクト発射するプログラムチップ。
アタッチするオブジェクトは実体のないエンプティオブジェクトが最適(Hierarchy→+→Create Empty)。
C# ObjShoot_Test00.cs マウス左クリックで弾丸発射プログラムチップ
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class ObjShoot_Test00 : MonoBehaviour
{
// 指定されたプレハブ化弾丸を生成、Z軸方向に指定スピードで射出
public GameObject objPrefab;
public float speed = 3; //初期値の加速量
void Update ()
{
if(Input.GetMouseButtonDown(0))
{
Shoot();
}
}
public void Shoot()
{
GameObject bullet = (GameObject)Instantiate(objPrefab, transform.position, Quaternion.identity);
Rigidbody bulletRigidbody = bullet.GetComponent();
bulletRigidbody.AddForce(transform.forward * speed,ForceMode.Impulse);
}
}
上記、プログラムチップの動作概要図解(Emptyにアタッチ)
実際の実行例動画 その1
以下の様に空のエンプティ(Empty)オブジェクトにプログラムチップをアタッチし、以下の図のように弾丸のオブジェクトをアタッチ、上記動画の様に弾丸が発射される。弾丸オブジェクトはリジットボディを付与しておく。
原則、弾丸の形状に制限はない。
実際の実行例動画 その2
使用Unityのバージョンは2021.3.7f1(LTS)。ただ、特別なことはしていないので、多分どのバージョンでも実行可能。
実験で上記テストプロジェクトをWebGL形式にして公開。
終了はタブを閉じる。操作方法(キーボード&マウス左ボタン)は以下。
Qキー:下降 | Wキー:前進 | Eキー:上昇 | マウス左ボタン:発射 |
Aキー:左移動 | Sキー:後退 | Dキー:右移動 |
Unity WebGL Player | ProgramChip_test00