On instancing the 2Dplayer script in player scene, the player coordinates match with screen coordinates ,
but when instanced as a child node in the main scene, it shows completely different player position coordinates.
How to resolve this?


#####----------------------------------------------------- Player Script ------------------------------------------------------------
extends Area2D
var speed = 40
var screen_size
var sprite_x
var sprite_y
func _ready():
screen_size = get_viewport_rect().size
sprite_x = $Sprite.texture.get_width()
sprite_y = $Sprite.texture.get_height()
print("screen_size.x - sprite_x = ",screen_size.x - sprite_x)
print("screen_size.y- sprite_y = ",screen_size.y - sprite_y)
func _process(_delta):
var velocity = Vector2() # player movement
if Input.is_action_pressed("ui_right"):
velocity.x += 1.0
if Input.is_action_pressed("ui_left"):
velocity.x -= 1.0
if Input.is_action_pressed("ui_down"):
velocity.y += 1.0
if Input.is_action_pressed("ui_up"):
velocity.y -= 1.0
if velocity.length() > 0:
velocity = velocity.normalized() * speed
position += velocity * _delta
position.x = clamp(position.x, 0, screen_size.x - sprite_x)
position.y = clamp(position.y, 0, screen_size.y - sprite_y)
print("Player position = (",position.x,",",position.y,")")
#####---------------------------------------------- Main Script ------------------------------------------------------------------------
extends Node2D
export (PackedScene) var PlayerMain
var screen_size
#
func _ready():
screen_size = get_viewport_rect().size
func _process(_delta):
var pos = Vector2()
pos = $Area2D/Sprite.position
print("Player_main position = ",pos)
$playerPos.clear()
$playerPos.text = str("Player_main position = (",pos.x," , ",pos.y,")")
print("screen_size = (",screen_size.x," , ",screen_size.y,")")
$screenPos.clear()
$screenPos.text = str("Screen_size = (",screen_size.x," , ",screen_size.y,")")