Hi!<br><br>I am testing on some features for my project. So here is very simple minimal test case.<br>Make new project, add Control to scene, save everything, and configure project as<br>
[display]<br><br>width=64<br>height=64<br>stretch_mode="viewport"<br>stretch_aspect="keep"
<p class="CodeBlock">Next, add script to Control:<br></p>
# flag for blocking continuous button press<br>var allow_movement = true<br><br>func _ready():<br> set_process(true)<br> set_process_input(true)<br> # just resize to someting smaller<br> set_size(Vector2(8, 8))<br><br>func _process(delta):<br> # one-shot one-pixel movements<br> if (Input.is_action_pressed("ui_left") && allow_movement):<br> allow_movement = false<br> set_pos(get_pos() + Vector2(-1, 0))<br> if (Input.is_action_pressed("ui_right") && allow_movement):<br> allow_movement = false<br> set_pos(get_pos() + Vector2(1, 0))<br> if (Input.is_action_pressed("ui_up") && allow_movement):<br> allow_movement = false<br> set_pos(get_pos() + Vector2(0, -1))<br> if (Input.is_action_pressed("ui_down") && allow_movement):<br> allow_movement = false<br> set_pos(get_pos() + Vector2(0, 1))<br> update()<br><br>func _input(event):<br> # when movement button is released - we are ready to move again<br> if (event.is_action_released("ui_left") ||\<br> event.is_action_released("ui_right") ||\<br> event.is_action_released("ui_up") ||\<br> event.is_action_released("ui_down")):<br> allow_movement = true<br><br>func _draw():<br> # draw rectangle at our position<br> draw_rect(Rect2(get_pos(), get_size()), Color(1, 1, 1))<br> # draw across viewport 1-pixel vertical lines interleaved with pixel line gap<br> for i in range(0, get_viewport().get_rect().size.width, 2):<br> draw_line(Vector2(i, 0), Vector2(i, get_viewport().get_rect().size.height), Color(0, 0, 0, 0.25))
From
this i want small pixel world (64x64 pixels), some square able to move
pixel-by-pixel on it, and some pattern on background.<br><br>Then strange things happen.<br><br>1. Background moves as i move my square (why? i told it to draw lines based on parent Viewport properties).<br>2. My square jumps over 2 pixels, instead of 1 (you can just count button presses from edge to edge - 32, not 64)<br><br>I try different ways to move and different objects - by setting their Rects, Sizes, Pos, Margins - they always move by 2 pixels.<br><br>Is this a whole lot of strange bugs? Or i'm completely out of understanding engine logic?
<div>
</div>