0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Godot4.0でジャイロセンサー使ってみた(Androidスマホ実行限定)

Last updated at Posted at 2023-04-23

 ゲームエンジンGodot4.0で3Dスマホゲームを作りたいと思いますが、その前にお勉強しています。
 2023/4/4リリースのGodot_v4.0.2-stable_win64を使用しています。

目的

 スマホゲームの入力としてジャイロセンサーを使ってみます。
 3D空間に物体を浮かせて、Androidスマホの傾きをジャイロスコープで検出して立方体を回転します。

Godot4.0でジャイロセンサーを読みだす方法

 Inputクラスにget_gyroscope()APIがあるので簡単に取得できます。
 「スマホデバイス」のX,Y,Z座標系の軸毎の回転速度をrad/sの単位で取得します。
 スマホを見て、左右がX軸、上下がY軸で奥行方向がZ軸のようです。

Vector3 get_gyroscope ( ) const
https://docs.godotengine.org/en/latest/classes/class_input.html#class-input-method-get-gyroscope

AndroidもしくはiOS上で実行する必要があります。本記事ではAndroidで実行確認をしました。

新規シーンを作成する

 ジャイロスコープのテストをするためにシーンを作成します。カメラとライトと立方体が1個あるシーンです。

ノード名:ノードクラス名 インスペクタ変更値
World : Node3D
 ┝━Camera3D Position : (0m, 5m, 0m) Rotation : (-90°, 0°, 0°)
 ┝━DirectionalLight3D Position : (-10m, 0m, 0m) Rotation : (-10°, 45°, 0°) shadow:オン
 ┗━MeshInstance3D 新規BoxMesh3D

 下記のようになります(スクリプトをアタッチしたあとです)
スクリーンショット (720).png

スクリプトの実装

 シーン内のWorldを右クリックしてスクリプトにアタッチを実行します。
 world.gdという名前で作成します。

 下記のように修正します。

extends Node3D

func _physics_process(delta):
	var v3_gyro_rad = Input.get_gyroscope()
	$MeshInstance3D.rotate_y( -v3_gyro_rad.z * delta)
	$MeshInstance3D.rotate_z(  v3_gyro_rad.y * delta)
	$MeshInstance3D.rotate_x( -v3_gyro_rad.x * delta)

 スマホの座標系とGodotエンジンの座標系の違いで、ZとY軸を入れ替えて設定します。
 符号も変換していますが、正直、実際の値を見て上記の実装をしました。
 Input.get_gyroscope()で取得する値はrad/sなので、deltaを掛け算した値をrotate_x/y/zメソッドに渡しています。

Androidのセンサー座標系
https://developer.android.com/guide/topics/sensors/sensors_overview?hl=ja#sensors-coords

一旦Windowsで実行します。

 一度Windows版で実行できるか確認します。
 実行して中央に正方形が表示されればOKです。

Androidアプリとしてエクスポートします。

 下記の記事を参考にしていただければ幸いです。

Androidスマホで実行します。

 背景が映り込まないように、真っ暗な室内でスマホの実行画面を撮影しました。
 起動直後。
4.jpg
 スマホを左に傾けたとき。
 立方体を回転しているので光の当たり方がかわるため、写真では起動直後に見えていた面がどこに移動したかわかりにくいですね。ライトも一緒に回転したほうよかったと思います。
3.jpg
 スマホを右に傾けたとき。
2.jpg
 スマホを奥に傾けたとき。
5.jpg
 スマホを手前に傾けたとき。
1.jpg

github

以上

0
1
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?