Hello,im working on a space strategi game, but something dont works.When i select one unit, all units react, and following them mouse... ): i want that just the selected follow...
Here is the code for the rts selection:
var dragging = false
var selected = []
var drag_start = Vector2.ZERO
var select_rectangle = RectangleShape2D.new()
onready var select_draw = $SelectDraw
func _unhandled_input(event):
if event is InputEventMouseButton and event.button_index == BUTTON_LEFT:
if event.pressed:
for unit in selected:
unit.collider.deselect()
selected = []
dragging = true
drag_start = get_global_mouse_position()
elif dragging:
dragging = false
select_draw.update_status(drag_start, get_global_mouse_position(), dragging)
var drag_end = get_global_mouse_position()
select_rectangle.extents = (drag_end - drag_start) / 2
var space = get_world_2d().direct_space_state
var query = Physics2DShapeQueryParameters.new()
query.set_shape(select_rectangle)
query.transform = Transform2D(0, (drag_end + drag_start) / 2)
selected = space.intersect_shape(query)
for unit in selected:
if unit.collider.get_parent().name == "Units":
unit.collider.select()
else:
selected.erase(unit)
if dragging:
if event is InputEventMouseMotion:
select_draw.update_status(drag_start, get_global_mouse_position(), dragging)
if event is InputEventMouseButton and event.button_index == BUTTON_RIGHT:
if event.pressed:
for unit in selected:
unit.collider.move_to(get_global_mouse_position())
And this is the code for the units:
func _ready():
target = position
func _physics_process(delta):
velocity = Vector2.ZERO
if position.distance_to(target) > target_max:
velocity = position.direction_to(target) * speed
look_at(target)
elif $shoot.is_colliding():
var collider = $RayCast.get_collider()
if collider.has_method("damage"):
collider.damage(10)
velocity = move_and_slide(velocity)
func move_to(tar):
target = tar
func select():
selected = true
$sprite.material.set_shader_param("run", true)
func deselect():
selected = false
$sprite.material.set_shader_param("run", false)
I hope my english is ok, i cant write that good, but i am still learning english!?