スプライト (より具体的には弾丸) を探して、マウスの左ボタンをクリックして別のスプライト (銃の端) から出てきて、弾丸をマウスの方向に移動させます。クリックが発生した後に位置を変更しないでください。かなり下手に説明しましたが、基本的には、弾丸がマウスの方向に移動し、一度クリックすると、位置を変更せず、画面から消えるまでその方向に追従することを探しています。私がやろうとしていることの良い例は、Terraria というゲームで射撃と弾丸がどのように機能するかです。
私はPosition2Dを使ってそれを理解しようとしています。私は弾丸を装填したい銃の端にPosition2Dを持っています。GoogleとYoutubeでも調査を試みました。現在、マウスの位置に応じて回転するスプライト (アーム) と、アームに取り付けられたスプライト (銃) があります。腕の情報を使って方向を見つけようとしていますが、わかりません。私はコーディング全般の初心者です。
これは、マウスの位置に応じて回転する腕のコードです。
extends Sprite
var Mouse_Position
func _process(delta):
Mouse_Position = get_local_mouse_position()
rotation += Mouse_Position.angle()*0.2
私の弾丸の現在のコードは次のとおりです。
extends Area2D
const SPEED = 100
var velocity = Vector2()
var Mouse_Position
func _physics_process(delta):
velocity.x = SPEED * delta
Mouse_Position = get_local_mouse_position()
rotation += Mouse_Position.angle()*0.2
translate(velocity)
func _on_VisibilityNotifier2D_screen_exited():
queue_free()
また、ここにそれをロードするためのいくつかの追加があります:
const BULLET = preload("res://Bullet.tscn")
if Input.is_action_just_pressed("shoot"):
var bullet = BULLET.instance()
get_parent().add_child(bullet)
bullet.position = $Position2D.global_position