0 votes

Hello people;

I don't know if this is possible, but I would like to know; Is it possible to do a reverse screen with one command? Like "pressing a button > changes the screen orientation"

Similar to the Mobile sensor, but done with a button within the game.

If anyone has a tutorial and it is possible, I would appreciate it; I have no idea even how to look this up in the forums

The picture sucks but illustrates my idea

asked Aug 12, 2019 in Engine by lucasfazzi (156 points)

There's got to be a better way, but I figured you can achieve this by rotating the viewport. The way I managed to do that was by creating a BoxContainer node with a Viewport Container inside, the child of which is a Viewport node. The tree looks like this:

-Node2D
   -BoxContainer
        -ViewportContainer
             -Viewport

I just created a script and attached it to the BoxContainer and using the set_rotation() method, I was able to change the orientation of the screen.

As far as I know, the root of any scene is not the top node, but a viewport. Maybe you could rotate that root vieport directly, but I do not know how. Maybe something that has to do with canvas layers or so. That's why I am not adding this as an answer. If my solution covers you, though, let me know and I will turn this comment to an answer so that others can find it.

OK I figured another possible solution, but I can't test it. In your Node2D script try this:

extends Node

func _process(delta):
    if Input.is_action_pressed("<action1>"):
        OS.set_screen_orientation(OS.SCREEN_ORIENTATION_LANDSCAPE)
    elif Input.is_action_pressed("<action2>"):
        OS.set_screen_orientation(OS.SCREEN_ORIENTATION_PORTRAIT)

Please tell me if this works.

I tried this method but with the documentation values ​​and it recognizes the command but it doesn't change anything

1 Answer

0 votes

Sorry for my ignorance, but isn't set_rotation() a Control Node only method?

answered Aug 12, 2019 by lucasfazzi (156 points)
Welcome to Godot Engine Q&A, where you can ask questions and receive answers from other members of the community.

Please make sure to read How to use this Q&A? before posting your first questions.