quarta-feira, 22 de junho de 2016

Compêndio BP 2: Player Controller

Player Controller


A classe "Controller" possui duas subclasses principais. A classe "PlayerController" é usada por jogadores humanos e a classe "AIController" usa inteligência artificial para controlar o "Pawn". Em um jogo simples não é necessário criar um Blueprint baseado em "PlayerController", pois a Unreal Engine já utiliza uma instância padrão do "PlayerController" que é suficiente para a maioria dos casos.

Objetos das classes "Pawn" e "Character" só recebem eventos de Input se estiverem sendo possuídos por um "PlayerController". Por isso é necessário o uso de um "PlayerController" mesmo que seja o padrão. Os eventos de Input podem ser colocados no "PlayerController" ou no "Pawn", mas eventos e ações relacionados à movimentação de um "Pawn" devem ficar na classe que representa o "Pawn".

Por exemplo, se o jogador controla um personagem que pode usar diversos tipos de veículos diferentes, como carro, helicóptero e lancha. Cada veículo é representado por uma subclasse de "Pawn" e deve conter as ações de movimento equivalentes. Mas um evento de Input que pausa o jogo não deve ficar na classe "Pawn", porque ele teria de ser repetido em todas as subclasses de "Pawn" usadas pelo jogo. O local ideal para este tipo de evento de Input que não está relacionado ao "Pawn" é na classe "PlayerController".

Crie um Blueprint baseado na classe "PlayerController" e clique no botão "Class Defaults" para visualizar os atributos específicos da classe "PlayerController".


É possível especificar uma nova classe "CameraManager". Se nenhuma for especificada é usada uma classe padrão que controla a câmera ativa usada pelo Pawn que está sendo controlado. Outros atributos permitem o ajuste da escala usada nos Inputs de rotação.

A imagem abaixo mostra uma forma bem simples de pausar/despausar o jogo quando a tecla "P" for pressionada. Estas ações estão em um "PlayerController". É usada a função "SetGamePaused" que recebe um valor booleano (verdadeiro ou falso) como entrada. Cada chamada à macro FlipFlop alterna o valor da variável "Is A" que é usada para definir se o jogo deve pausar ou despausar. Um detalhe muito importante, no evento de Input da tecla "P" é preciso marcar a opção "Execute when Paused".

Clique para aumentar


Sumário