Estou um pouco confuso sobre o papel dos atores e o game mode num cenário que pensei pra meu projeto.
Eu quero fixar a camera e transladar dois blocos apertando botões específicos no teclado (imagem anexada).
De acordo com a imagem, o player seria o bloco 2 (laranja), mas pode controlar a descida do bloco 1 (preto).
Até agora só encontrei tutoriais para controlar um único Pawn. Pelo que entendi mexendo aqui, eu crio o game mode e defino a blueprint de um pawn para controlar.
Como crio um game mode para controlar os dois objetos?
Desculpem se a pergunta é muito ampla, mas é que não estou entendo direito a criação do controlador.
O Pawn é uma representação do personagem na tela. O Player Controller é uma representação do jogador que está jogando.
Se você quer controlar outro pawn dentro do jogo, a classe player controller tem uma função chamada Possess() que é para assumir o controle e UnPossess() que é para retirar o controle sobre um Pawn. Pensa em um jogo onde o personagem pode entrar dentro de um carro, você faria o jogador começar a controlar o carro e quando saísse do carro, passaria o controle de volta para o personagem.
O Game Mode é onde você define as regras do jogo, como por exemplo um team deathmatch ou free for all.
No link abaixo pode te ajudar a entender um pouco como funciona.
É isso mesmo o que o @samuelhely disse, mas no caso de controlar mais de umPawn, o que eu faria seria criar um **Pawn **“invisível” com referência para os **Actors **que você quer controlar ( bloco laranja e bloco preto ) e enviar os comandos para eles pelo **Pawn **( para não complicar, poderia ser pelo **PlayerController **mas complicaria ).
Sobre o **GameMode **como foi dito é onde ficam as regras do jogo, quais são os Pawns, os PlayerControllers, etc.
Isso porque em jogos online é ele quem define as ações como: “fizeram um gol”, “jogador A matou jogador B”, o que não é feito no lado dos jogadores só no servidor ( que é onde o GameMode fica,pra evitar trapaças do lado dos jogadores ).
Para jogos offline o **GameMode **fica do lado do jogador e você tem acesso a ele com GetGameMode(), no online só se o jogador for o próprio servidor, caso contrário não.
samuelhely, estava pensando no que flou do Possess(). Na verdade não vou movimentar os dois blocos ao mesmo tempo, então posso criar um botao pra usar o Possess assim: **Possessing Pawns in Blueprint. **Eu consigo trocar o Pawn e imediatamente executar uma ação ao apertar a tecla referenciada para o bloco?
SolidSk quando você diz enviar os comandos para os Actors pelo Pawn, seria sem o controller?
1 - Se você mudar o **Pawn **pelo **Possess **ele já vai receber os comandos, se você quiser executar alguma coisa na hora do **Possess **você pode usar: https://docs.unrealengine.com/en-US/…sed/index.html
2 - Sim, se for um **Pawn **controlando os dois Actors, você pode enviar os comandos direto pelo Pawn porque os comandos do **PlayerController **são passados pra o Pawn.
O que eu disse era exatamente para controlar um pawn por vez.
Consegue sim, inclusive o link que você postou mostra exatamente isso.
Sobre usar Actors ao invés Pawns, eu prefiro usar a classe pawn mesmo, até porque um pawn é um actor com uma relação mais estrita com o player controller, mas ai fica a seu critério.
@o PlayerController é um tipo de BP né? Se for isso, eu acho que estou fazendo sem controller msm pq segui esses passos:
Crie uma blueprint chamada “BP_Prensa” do tipo *DefaultPawn, *que já vem com um CollisionComponent(inherited) e MovementComponent(inherited) ;
Nessa bp, adicionei um InputAxis e um deslocamento de descida;
Adicionei uma mesh de um cubo nessa BP_Prensa pra aparecer o corpo do Pawn (é preciso? Já tem um MeshComponent, mas é uma esfera e não consegui mudar p/ cubo);
Por fim, criei um mode game e defini o Default Pawn Class como “BP_Prensa”.
O Pawn invisível seria sem MeshComponent?
Os Actors seriam simples StaticMeshs?
Como funciona esse método de referenciar esses actors para um Pawn? Isso seria escrito na BP_Prensa?
Se você clicar no componente MeshComponent (inherited) e ir no painel de detalhes, você vai ser uma opção para mudar a malha estática que vai ser usada no seu Pawn
Você pode adicionar um ChildActorComponent e selecionar qual ator o componente vai instanciar pra você
Tem várias formas de fazer isso. Se você quiser usar atores externos a sua Prensa, você pode criar variáveis na sua blueprint e depois obter uma referência ou pesquisar esses atores usando um Get All Actors of Class ou algo parecido. A forma mais fácil é criar variáveis que você seta no editor
Pode sim, um Pawn é um Actor com movimento e input e que pode ser controlado.
Se estiver com duvida, na janela que abre quando vc vai criar um blueprint, vc pode ver a hierarquia como na imagem que anexei. Aconselho tbm a procurar entender o conceito de hierarquia em programação.
Se quiser, vc pode criar uma classe Pawn como base para seus blocos e incluir nele funções em comum, e se os blocos que vc quer controlar serão derivados da sua classe base.
Outro recurso que te recomendo a ler é o Compendio criado pelo Marcos Romero, lá vai ter o que vc precisa pra entender esse relacionamento.