Topic was automatically imported from the old Question2Answer platform.
Asked By
YAGU
I have a Node2D “Asteroid” that I want to rotate around specific Vector2.
In my case, the Asteroid gets spawned randomly on the map. I want to rotate it around the center of my map, in my case Vector2(mapSize / 2, mapSize / 2)
How can I do this?
In Unity they had something like “RotateAround” but it seems this is not the case in Godot. I’m really bad in maths and don’t know how to work with sin and cos
what i usually do in cases like that is parent to a pivot(position2D) and rotate the pivot.
puzzlebeast | 2021-04-01 22:39
Have you considered making your map from -map_size / 2 to map_size / 2 instead of 0 to map_size? Then (0, 0) would be the center.
extends Node2D
var angle = 0
var rotation_speed = 1
var center
var radius
# Called when the node enters the scene tree for the first time.
func _ready():
center = $Sprite.position
radius = $Sprite2.position.distance_to(center)
func _process(delta):
angle = lerp(angle, deg2rad(360), rotation_speed * delta)
var coord = (Vector2(cos(angle), sin(angle)) * radius) + center
$Sprite2.position = coord
if angle > deg2rad(358):
angle = 0
You will have to find a way to have a linear speed and handle the looping