0

スプライト (より具体的には弾丸) を探して、マウスの左ボタンをクリックして別のスプライト (銃の端) から出てきて、弾丸をマウスの方向に移動させます。クリックが発生した後に位置を変更しないでください。かなり下手に説明しましたが、基本的には、弾丸がマウスの方向に移動し、一度クリックすると、位置を変更せず、画面から消えるまでその方向に追従することを探しています。私がやろうとしていることの良い例は、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
4

1 に答える 1