Struktur:
1) Enemy.tscn
2) Player.tscn
3) Player.gd
4) Enemy.gd (nicht benutzen)
5) Main.gd
Main.tscn:
-- Node2D
-- -- Panel
-- -- -- Player.tscn
-- -- -- Enemy.tscn
Enemy.tscn:
-- Node2D
-- -- Sprite
-- -- -- Label
Player.tscn:
-- KinematicBody2D
-- -- CollisionShape2D
-- -- -- Sprite
-- -- -- -- Label
Player.gd
extends KinematicBody2D
export (int) var speed = 200
var velocity = Vector2()
func get_input():
velocity = Vector2()
if Input.is_action_pressed('ui_right'):
velocity.x += 1
if Input.is_action_pressed('ui_left'):
velocity.x -= 1
if Input.is_action_pressed('ui_down'):
velocity.y += 1
if Input.is_action_pressed('ui_up'):
velocity.y -= 1
velocity = velocity.normalized() * speed
func _physics_process(delta):
get_input()
velocity = move_and_slide(velocity)
func _ready():
pass # Replace with function body.
Main.gd
extends Node2D
var player = null
var enemy = null
# Called when the node enters the scene tree for the first time.
func _ready():
var main = get_node(".")
var panel = main.get_node("Panel")
player = panel.get_node("Player")
enemy = panel.get_node("Enemy")
func _physics_process(delta):
var dir = get_player_direction(player, enemy)
move_to_player(enemy, dir, delta)
func get_player_direction(pNode, eNode):
var pPosition = pNode.get_position()
var ePosition = eNode.get_position()
var e_x = ePosition.x
var e_y = ePosition.y
var p_x = pPosition.x
var p_y = pPosition.y
var dx = p_x - e_x
var dy = p_y - e_y
var root_square = pow(pow(dx,2)+pow(dy,2),0.5)
return Vector2(dx, dy)/root_square
func move_to_player(eNode, dir, delta):
var pos = eNode.get_position()
var x = pos.x
var y = pos.y
var enemy_speed = 10
eNode.set_position(Vector2(x + dir.x*enemy_speed*delta, y + dir.y*enemy_speed*delta))
Enemy.gd
extends Node2D
# Declare member variables here. Examples:
# var a = 2
# var b = "text"
# Called when the node enters the scene tree for the first time.
func _ready():
pass # Replace with function body.
# Called every frame. 'delta' is the elapsed time since the previous frame.
#func _process(delta):
# pass
Es testet schon. Es ist richtig, habe ich überprüft.