mieki256's diary



2020/11/14() [n年前の日記]

#5 [godot] Godot Engineで敵のシーンを作成

Godot Engine 3.2.3 x64 を使って3D表示の簡単なシューティングゲームっぽいものを作る。

今回は敵のシーンを作ってみる。

ノード構成を作成。 :

ルートノードを Area にして、以下のノード構成でシーンを作成。

3d_tuto07_create_enemy_ss01.png


ノードをリネーム。

3d_tuto07_create_enemy_ss02.png

EnemyZako (Area)
  │
  ├─ EnemyZakoModel (Spatial)
  │     │
  │     └─ MeshInstance
  │
  ├─ CollisionShape
  │
  └─ ShotTimer (Timer)


MeshInstance の Meshプロパティで、新規 CapsuleMesh を作成。色は黄色にしてみた。

3d_tuto07_create_enemy_ss03.png

3d_tuto07_create_enemy_ss04.png

3d_tuto07_create_enemy_ss05.png


アタリ範囲を設定。CollisonShape を選択して、Shape に箱型のアタリ、BoxShape を新規作成。

3d_tuto07_create_enemy_ss06.png


res://assets/ 以下に、EnemyZako.tscn としてシーンを保存。

3d_tuto07_create_enemy_ss07.png

スクリプトを追加。 :

EnemyZako にスクリプト res://scripts/EnemyZako.gd をアタッチ。

3d_tuto07_create_enemy_ss08.png

EnemyZako.gd の内容を以下にする。

_EnemyZako.gd
extends Area

export (PackedScene) var enemybullet

var base_pos = Vector3()
var angle = 0
export var move_w = 22
export var move_h = 12

func _ready():
    base_pos = translation
    angle = 0

#func _process(delta):
#   pass

func _physics_process(delta):
    move(delta)
    
func move(delta):
    angle += delta
    translation.x = base_pos.x + move_w * cos(deg2rad(angle * 90))
    translation.z = base_pos.z + move_h * sin(deg2rad(angle * 70))

translation.x と translation.z に sin値、cos値を入れて画面の中をふらふらと動くようにしている。

Mainシーンに追加。 :

Mainシーンに、EnemyZakoシーンをインスタンスとして追加する。初期位置は適当に調整。

3d_tuto07_create_enemy_ss09.png

平行光源を追加。 :

作業をしていてなんだか画面が暗いような気がしてきたので、Mainシーンに、平行光源の DirectionalLightノードを追加して光を当ててみる。

3d_tuto07_create_enemy_ss10.png


Shadow の Enabled にチェックを入れて有効にすれば、画面の中で影も描画されるようになる。

3d_tuto07_create_enemy_ss11.png

動作確認。 :

Mainシーンを開いて、F6キーを押して動作確認。



敵に相当するシーンが画面の中でふわふわと動いてくれた。

次回は敵に弾を撃たせてみる。

以上です。

過去ログ表示

Prev - 2020/11 - Next
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project