mirror of
https://github.com/JHDev2006/Super-Mario-Bros.-Remastered-Public.git
synced 2025-10-22 15:38:14 +00:00
added the game
This commit is contained in:
39
Scripts/Parts/UpsideDownGravityArea.gd
Normal file
39
Scripts/Parts/UpsideDownGravityArea.gd
Normal file
@@ -0,0 +1,39 @@
|
||||
class_name UpsideDownGravityArea
|
||||
extends PlayerDetection
|
||||
|
||||
var players_inside: Array[Player] = []
|
||||
|
||||
@export var polygon: CollisionPolygon2D
|
||||
|
||||
@export var enable_low_gravity := true
|
||||
|
||||
var low_gravity := false
|
||||
|
||||
@export var new_vector := Vector2.UP
|
||||
|
||||
func _physics_process(_delta: float) -> void:
|
||||
for i in get_tree().get_nodes_in_group("Players"):
|
||||
if Geometry2D.is_point_in_polygon(polygon.to_local(i.global_position), polygon.polygon):
|
||||
if players_inside.has(i) == false:
|
||||
players_inside.append(i)
|
||||
on_player_entered(i)
|
||||
else:
|
||||
if players_inside.has(i):
|
||||
players_inside.erase(i)
|
||||
on_player_exited(i)
|
||||
|
||||
func on_player_entered(player: Player) -> void:
|
||||
low_gravity = player.low_gravity
|
||||
player.gravity_vector = new_vector
|
||||
player.low_gravity = enable_low_gravity
|
||||
player.global_position.y -= 16
|
||||
player.global_rotation = -player.gravity_vector.angle() + deg_to_rad(90)
|
||||
player.reset_physics_interpolation()
|
||||
|
||||
func on_player_exited(player: Player) -> void:
|
||||
player.gravity_vector = Vector2.DOWN
|
||||
player.low_gravity = low_gravity
|
||||
player.global_position.y += 16
|
||||
player.velocity.y *= 1.1
|
||||
player.global_rotation = -player.gravity_vector.angle() + deg_to_rad(90)
|
||||
player.reset_physics_interpolation()
|
Reference in New Issue
Block a user