Attention | Topic was automatically imported from the old Question2Answer platform. | |
Asked By | fmt |
Hey there. I’m trying to generate random points inside a rotated CollisionShape2D but when I rotate it It seems that it’s being rotate around the scene origin and not the shape pivot point. This is should be very simple but I’m just missing something. I’ve attached some screens of what is happening and the code.
Thanks in advanced
extends Node2D
@onready var spawning_areas = get_children()
func get_random_position():
var index = randi_range(0, spawning_areas.size() - 1)
var spawning_area = spawning_areas[index]
var extent = spawning_area.shape.extents
var spawn_rotation = spawning_area.transform.get_rotation()
var origin = spawning_area.position - extent
var spawn_area_origin = spawning_area.transform.origin - extent
var x = randi_range(spawn_area_origin.x, spawn_area_origin.x + extent.x*2)
var y = randi_range(spawn_area_origin.y, spawn_area_origin.y + extent.y*2)
var return_pos = Vector2(x,y).rotated(spawn_rotation)
# also tried this... doesn't work...
# return_pos.x = (cos(spawn_rotation) * (return_pos.x - origin.x) - sin(spawn_rotation) * (return_pos.y - origin.y)) + origin.x
# return_pos.y = (sin(spawn_rotation) * (return_pos.x - origin.x) + cos(spawn_rotation) * (return_pos.y - origin.y)) + origin.y
return return_pos