Unity Screen Wrap Object – Scripts

“Wrap Objects in Screen”

… é uma técnica comum usada em jogos para permitir que objetos se movam pela tela sem nunca sair dela. Essa técnica é particularmente útil em jogos de ação e arcade, onde os jogadores precisam se mover rapidamente pela tela enquanto evitam obstáculos ou inimigos. Quando um objeto se move para fora da tela, ele é automaticamente reposicionado do outro lado da tela, dando a ilusão de que o objeto nunca saiu da tela. Ao utilizar esta técnica os desenvolvedores podem criar jogos mais dinâmicos e desafiadores, sem que os jogadores fiquem perdidos ou desorientados. Essa técnica também pode ser usada para criar efeitos visuais interessantes, como objetos que parecem se mover continuamente em círculos pela tela. Embora a técnica possa ser relativamente simples de implementar, é importante ter em mente que ela pode afetar a jogabilidade e a estética do jogo, e deve ser cuidadosamente equilibrada para garantir que a experiência do jogador seja sempre satisfatória.

Além disso, a técnica “Wrap” também pode ser usada para criar uma sensação de continuidade no jogo, já que os objetos que saem de uma borda da tela parecem entrar pela outra. Isso pode ser especialmente útil em jogos em que o jogador deve atravessar grandes áreas, como em jogos de corrida ou plataformas, onde a sensação de estar em um mundo contínuo pode aumentar a imersão do jogador. No entanto, é importante lembrar que ela pode não ser adequada para todos os tipos de jogos. Em jogos que se concentram em imersão e realismo, por exemplo, essa técnica pode parecer artificial ou quebrar a sensação de imersão. Além disso, a técnica pode ser um pouco mais difícil de implementar em jogos com gráficos 3D, onde a posição dos objetos é mais complexa. Em resumo, a técnica “Wrap Objects in Screen” pode ser uma técnica eficaz para criar jogos mais dinâmicos e desafiadores, mas deve ser usada com cuidado e considerando as particularidades de cada jogo.

Caso queira aprender a como criar um powerup na unity, você pode assistir o tutorial logo a baixo. Mas se chegou até aqui apenas querendo o código do vídeo, você pode encontrá-lo um pouco mais a baixo!

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Wrap: MonoBehaviour {
   
    void FixedUpdate() {
        if (transform.position.x < -9.7f) {
            transform.position = new Vector2(9.7f, transform.position.y);
        }
        if (transform.position.x > 9.7f) {
            transform.position = new Vector2(-9.7f, transform.position.y);
        }


        if (transform.position.y < -5.38f) {
            transform.position = new Vector2(transform.position.x, 5.38f);
        }
        if (transform.position.y > 5.38f) {
            transform.position = new Vector2(transform.position.x, -5.38f);
        }

    }
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Wrap3: MonoBehaviour {

    Camera cam;

    void Start() {
        cam = Camera.main;
    }

    private void Update() {
        ManterNaTela_02();    
    }
   
    private void ManterNaTela_02() {

        // (0, 0) - bottom-left
        // (1, 1) - top-right

        Vector3 newPosition = transform.position;
        Vector3 viewportPosition = cam.WorldToViewportPoint(transform.position);

        if (viewportPosition.x > 1) {
            newPosition.x = -newPosition.x + 0.1f;
        } else if (viewportPosition.x < 0) {
            newPosition.x = -newPosition.x - 0.1f;
        }

        if (viewportPosition.y > 1) {
            newPosition.y = -newPosition.y + 0.1f;
        } else if (viewportPosition.y < 0) {
            newPosition.y = -newPosition.y - 0.1f;
        }

        transform.position = newPosition;
        
    }

}
Compartilhe !