レーザー発射

GDevelop

レーザーってカッコイイですよね!どんなゲームジャンルでもレーザー発射したくなりますよね!!GDevelopだとこれ2条件の7アクションで実装できちゃうんですよ。レーザーが消える部分は、Tweenビヘイビアを使っているので条件・アクション数を減らせてますが・・・2点間の距離、2点間の角度、sine、cosineなどの計算が関数で提供されてるのでめっちゃ簡単でシンプルになります。 では、レーザー発射のやり方を紹介します。


1、新しいオブジェクトを追加

・アセットストアを検索タブから「BluePlayerShip1」「BlueLaser01」を追加

・オブジェクトの新規追加からShapePainterオブジェクトを選択しオブジェクト名を「AimLine」とし追加

2、AimLineオブジェクトを画面に配置し、座標をX:0、Y:0に設定

3、BluePlayerShip1を画面に配置する

↓ここまででこんな感じです

4、BluePlayerShip1のポイントを編集(Fireを追加)

5、BlueLaser01のOrigin、Centerポイントを下に編集

6、BlueLaser01オブジェクトのビヘイビアに「Tween」を追加

7、イベントシートでLaser照準と発射処理を作ります。2条件の7アクションで完成です

8、Laser照準処理の解説です

①BluePlayerShip1の座標とマウス座標から角度を算出しオブジェクト変数に格納。ポイントは数学的ツールの「2点間の角度」を利用

AngleBetweenPositions(BluePlayerShip1.X(), BluePlayerShip1.Y(), MouseX(), MouseY())

②BluePlayerShip1の角度を①で算出した角度から-90して設定

③AimLineオブジェクトの直線描画を設定

ポイントは、終点座標をsin、cosで算出。①で算出した角度はToRad関数でラジアンに変換。

終点のX座標
BluePlayerShip1.X()-1000*cos(ToRad(BluePlayerShip1.Variable(Angle)))
終点のY座標
BluePlayerShip1.Y()-1000*sin(ToRad(BluePlayerShip1.Variable(Angle)))

9、Laser発射処理の解説です。

①BuleLaser01オブジェクトをBluePlayerShip1のFireポイント座標に生成。

②BlueLaser01高さをスクリーンの高さに設定

③BuleLaser01角度にBluePlayerShip1オブジェクト変数Angleで代入

④BlueLaser01をTweenで不透明度0へ500msかけて変化させる。

ポイントは、Tween終了時にオブジェクト破壊する

以上です。

このレーザーを使ったゲームを公開してますので是非遊んでください。

コメント