Announcement

Collapse
No announcement yet.

Dúvida de iniciante sobre Pawn Actor e Game Mode

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

    Dúvida de iniciante sobre Pawn Actor e Game Mode

    Boa tarde galera,

    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.
    Attached Files

    #2
    Quem controla o Pawn é o Player Controller.

    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.
    https://docs.unrealengine.com/en-US/...ure/index.html

    Comment


      #3
      É isso mesmo o que o samuelhely disse, mas no caso de controlar mais de um Pawn, 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.
      Last edited by SolidSk; 10-19-2020, 06:19 PM.

      Comment


        #4
        Obrigado pessoal!!

        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?

        Comment


          #5
          MarcusMO respondendo as duas perguntas:

          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.

          Comment


            #6
            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.
            O que eu disse era exatamente para controlar um pawn por vez.

            Eu consigo trocar o Pawn e imediatamente executar uma ação ao apertar a tecla referenciada para o bloco?
            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.

            Comment


              #7
              SolidSk o PlayerController é um tipo de BP né? Se for isso, eu acho que estou fazendo sem controller msm pq segui esses passos:

              1. Crie uma blueprint chamada "BP_Prensa" do tipo DefaultPawn, que já vem com um CollisionComponent(inherited) e MovementComponent(inherited) ;

              2. Nessa bp, adicionei um InputAxis e um deslocamento de descida;

              3. 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);
              Click image for larger version

Name:	fig1.PNG
Views:	49
Size:	24.4 KB
ID:	1823975

              4. Por fim, criei um mode game e defini o Default Pawn Class como "BP_Prensa".
              Click image for larger version

Name:	fig1.PNG
Views:	66
Size:	48.8 KB
ID:	1823974

              É isso mesmo o que o samuelhely disse, mas no caso de controlar mais de um Pawn, 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 ).
              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?

              Comment


                #8
                Originally posted by MarcusMO View Post
                SolidSk

                3. 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);
                Click image for larger version  Name:	fig1.PNG Views:	0 Size:	24.4 KB ID:	1823975
                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

                Os Actors seriam simples StaticMeshs?
                Você pode adicionar um ChildActorComponent e selecionar qual ator o componente vai instanciar pra você

                Como funciona esse método de referenciar esses actors para um Pawn? Isso seria escrito na BP_Prensa?
                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
                Last edited by mcleary; 10-20-2020, 10:31 AM.

                Comment


                  #9
                  Boa noite galera,

                  Ainda estou me familiarizando com os componentes dos actors. Agora tenho uma ideia do que serão meu actors bloco 1 e bloco 2.

                  Por enquanto, consegui criar comandos de movimento para o bloco 1 criando uma blueprint do tipo Pawn.

                  Para o meu bloco 2 eu criei uma blueprint do tipo Actor e adicionei uma ProceduralMesh.

                  Para adicionar movimento e no bloco 2 ele deveria ter sido criado como Pawn e depois adicionado um componente ProceduralMesh?

                  Comment


                    #10
                    Para adicionar movimento e no bloco 2 ele deveria ter sido criado como Pawn e depois adicionado um componente ProceduralMesh?
                    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.
                    https://romeroblueprints.blogspot.com/p/sumario.html
                    Attached Files

                    Comment

                    Working...
                    X