|
|
|
|
Reply From: |
BennyDT |
I messed around with it and found an answer.
I, wildly over-exaggerated the issue and didn’t consider it a normal mini map with mouse movement but for the people who want to know what I did…
1 - Create a base image, preferably a grid but you do you. This will be the map.
2 - Put a sprite of whatever you want on the map in the same scene (We will duplicate it to create more elements on the map so hide it for now. We will show them in step 4)
3 - Duplicate the image to your hearts content using for loops. Also, add the duplicate sprites to their own node. We will use a for loop to get all that nodes children and move them as a unit. I will call this node $MapIcons for future reference.
4 - If your sprites position is outside the map, hide them. If they are inside, show them.
5 - Create a new input for left mouse button, (So that we can get is_action_just_pressed and is_action_pressed for the mouse button)
6 - Get mouse distance in between a click, I did this by setting an old_mouse position on-click and setting a new_click position using the is_action_just_pressed for the old_mouse and is_action_pressed for new_mouse. After you have those, you can probably find a way to use them but I used the code below to add them together and use them as one. I did this with the code below. It returns the amount you moved the mouse from the initial click to the drag of the mouse.
var old_click = Vector2(0,0)
var new_click = Vector2(0,0)
func mouse_position():
# Remember to create the left mouse click input!!
if Input.is_action_just_pressed("left_mouse_button"):
# Get the Initial Mouse Click Position
old_click = get_global_mouse_position()
# Return Nothing because we need to return something.
return Vector2(0,0)
elif Input.is_action_pressed("left_mouse_button"):
# Get the Current Mouse position while you hold the left mouse button
new_click = get_global_mouse_position()
# If distance is more than 0, return distance as a Vector2()
if old_click.distance_to(new_click) != 0:
var click_dis = Vector2(old_click.x - new_click.x, old_click.y - new_click.y)
print(str(click_dis))
return click_dis
else:
return Vector2(0,0)
# If nothing is pressed, reset everything.
else:
old_click = null
new_click = null
return Vector2(0,0)
7 - Use a for loop for all those children inside the $MapIcons and move their position (minus equals) -= mouse_position(). (Pluss makes it go reverse)
8 - Viola! Presto! We now have what I was looking for. Now you have the basic knowledge I have. Thank you for all the help!