[Unity6]Notas sobre como criar comportamento semelhante ao de jogos de tiro em primeira pessoa (FPS).

この記事は約6分で読めます。
スポンサーリンク

Coisas que eu quero fazer

Criarei um comportamento semelhante ao de um jogo de tiro em primeira pessoa (FPS) no Unity, controlado por um mouse.

Vou listar alguns pontos a serem considerados em relação ao processo de criação.

Este documento ainda está em construção, portanto pode conter erros. Utilize-o apenas como referência.

especificação:

Movimento do mouse para a esquerda/direita → Movimento da visão da câmera

Clique com o botão esquerdo → Avançar

Ele para quando bate em uma parede.

スポンサーリンク

Ambiente

Unity: 6000.0.23f1.7976.6000.0/Staging4246

スポンサーリンク

implementação

Configuração do jogador e da câmera

Criação de Jogador

Crie um objeto 3D que se tornará o Jogador a partir do sinal de + na Hierarquia.

Como não é visível em jogos de tiro em primeira pessoa, qualquer formato serviria, mas escolhi um cubo. Considerando futuros problemas de detecção de colisão, o cubo parece a opção mais segura.

Movimento de câmera

Arraste e solte a MainCamera da visualização Hierarchy para o Player para torná-la filha do Player.

A estrutura hierárquica é a seguinte:

Ao tornar MainCamera filha de Player, a câmera seguirá automaticamente o jogador quando ele se mover.

Como mencionado anteriormente, a câmera segue o jogador, então mova a câmera para as mesmas coordenadas X e Z do jogador. Posicione a coordenada Y ligeiramente acima do jogador.

O cubo na parte inferior representa o jogador, e a seta aponta para a câmera.

Adicione um script ao player

Fiz o seguinte para o Jogador:

using UnityEngine;

public class player : MonoBehaviour
{
    private float speed = 5.0f;

    void Update()
    {
        float mx = Input.GetAxis("Mouse X");////mouse movement
        if (Mathf.Abs(mx) > 0.001f) 
        {
            transform.RotateAround(transform.position, Vector3.up, mx); ////update POV
        }

        if (Input.GetMouseButton(0))//////////repeat while press 
        {
            float zMovement = speed * Time.deltaTime;
            transform.Translate(0, 0, zMovement);/////forward
        }
    }
}

Adição de cálculos de física

Configurações do jogador

Adicione um componente RigidBody a partir do AddComponent do Player e altere as configurações da seguinte forma.

Marcar a opção Y em Congelar Posição impedirá o comportamento de ricochete que ocorre quando um objeto colide com outro. (Isso não é obrigatório.)

Marcar as opções X, Y e Z em ‘Congelar Rotação’ interromperá o comportamento de rotação ao colidir com um objeto. Se você não marcar essa opção, a câmera também girará ao colidir, portanto, é melhor marcá-la.

Configurações de parede e obstáculo

Aqui, usaremos o objeto criado no Blender, conforme descrito no artigo a seguir, para representar uma parede.

No entanto, para simplificar os cálculos de física, desmarquei a opção Gerar Colisor .

Selecione o objeto adicionado na visualização Hierarquia e adicione um Box Collider.

Clique em EditarCollier.

Uma moldura verde aparecerá na visualização da cena, como mostrado abaixo; ajuste-a para que se ajuste ao objeto.

(Observe que, embora uma borda azul apareça ao selecionar um objeto, trata-se de uma área diferente.)

Em seguida, adicione um Rigidbody e marque todas as caixas de seleção ‘Congelar Posição’ e ‘Congelar Rotação’, conforme mostrado abaixo.

Dessa forma, mesmo que você colida com ela, a parede não se moverá.

スポンサーリンク

Sites que utilizei como referência

【Unity】マウスカーソルを使った視点の移動とカメラ追従の実装のメモ(FPS風) - Qiita
はじめに 今回はUnityでFPS風の視点移動を実装する方法を説明したいと思います。以下が最終的にイメージしているものです。マウス操作で視点移動とPlayerの向きを変更させ、wasdで移動です。 準備するもの まず以下の画像のようにcubeでplayerを作り、...

コメント

タイトルとURLをコピーしました