SchultzGames
Para tirar dúvidas, crie um tópico especifico na área "Dúvidas em Geral" e aguarde ser respondido. Evite comentar em tópicos não relacionados a sua dúvida :D
TÓPICOS RECENTES:
Tópico:
Postado em:
Postado por:
Jogo Mobile - Ultimate Flight Simulator - Real World SDK
Unity - FPS e CPU ???
Usar microfone na Unity
Jogo ficando escuro quando faço a Build pela cena menu
Dúvida sobre movimentação do personagem
[RESOLVIDO] ACESSAR SCRIPT DE OUTRO GAMEOBJECT
Para eu ter shader em meu projeto eu tenho que usar o hdrp ou o 3d padrao?
Rotate Camera Mobile
Sou modelador 3d (!!! Arquitetonico!!!) Disponivel !!!!!!
Preciso de alguém que saiba programação e Raycast
Servidor/cliente usando sockets
Assets carregados com addressables causando erro na versão "buildada"
Jogo multiplayer com salas - não vai para o lobby
Texto - Não escreve no 'play'. Clica mais não digita.
Error Unity Vulkan - Out of memory! (allocating memory for image)
Câmera Não esta renderizando na segunda janela.
Movimento da Câmera No Android
[RESOLVIDO] - Unity não está mais funcionando o "Build and Run"
Precisa de modelador com ou sem experiência
Duvida com "mesclagem" de animação
[TUTORIAL] Como fazer uma gota de água na Unity
Missoes Aparecerem aleatoriamente do nada
Dúvida pafra IOS
botoes não esta funcionando corretamente nem a fisica?
Duvida com NavMeshAgent
COMO AUMENTAR E DIMINUÍ A SENSIBILIDADE DO TOQUE POR CÓDICO (MOBILE)
A Licença da Unity só funciona se eu tiver Internet
Problema com OnTriggerEnter
Transparência ao colidir
bool para evitar de salvar frames repetido
Unity - Transições no AnimatorController rodando errado
problemas com "wall Jump" , atribuir força ao eixo X
Meu Jogo ja Esta Pronto! EXPERIMENTEM!!
JOSTICK NAO SE MOVE
botoes para mobile
ERRO NO SCRIPT FOME E SEDE ETC
CORTAR ARVORES E DROPAR
Configurar sistema
Unity - Sugestões da Loja
Standard Assets para UNITY 5 em ".unitypackage"
Problema com o Shader
[TUTORIAL] Sistema Simples de Falas
Velocímetro Bugado
Como faço para alinhar uma textura na posição absoluta do mundo no shader
Sobre o Tutorial de Cortar Arvores
Erro Mov Player
[TUTORIAL] VELOCIMETRO DE PONTEIRO
[TUTORIAL] Ligar/Desligar luz por Interruptor
Sistema de lampadas
Conversor de movimento do Unity para o MMD [Ajuda]
Script de configurações não esta funcionando corretamente
CAMERA BUGANDO NA TRANSIÇÃO DE CENA
Volante girando errado [AJUDA]
Novo Asset Sistema de Portas e Chaves
ERRO NAS RODAS DO CARRO
[TUTORIAL] Sistema de câmera em primeira pessoa SIMPLES
AJUDA PARA UM SISTEMA DE CHECKPOINT
Jogo offline com Loja?
Unity -TextMeshProUGUI- 1 das coisas q estão deixando a scene lenta p abrir
Detectar quando o animation curve chega no final
Problema com compilação para Android na Unity 2019.4.35
Aplicativo para IOS
Árvores feitas na Unity
RECRUTAMENTO WAR CORE FPS
[RESOLVIDO] Unity - Scrollbar não funciona
[TUTORIAL] AI que cria scripts para você, inclusive scripts para Unity !!!!
[RESOLVIDO] Animando Image na Unity não funciona
Hospedar um jogo multiplay na itch.io
Script para detetectar o movimento do player
Alguém ajuda com um erro por favor? PSDImporter.cs
[RESOLVIDO] - Unity - Rotação da Câmera - Mathf.Clamp não funciona
Alterar textura .unity3d
Comportamento do movimento do inimigo. Sair do caminho e Fugir
Procuro uma equipe
Ajuda Com Sala de Jogo Multiplayer
COMO FAZER A PORTA ABRIR SÓ EMPURRANDO ELA COM O PLAYER?
Visual Studio - Vend os Scripts na Aba "Modo de Exibição de Classe" soltos
app fica fechendo após mobile notification
[RESOLVIDO] Controlar dois player dentro de um jogo multiplay usando mirror
Unity - O Jogo fecha quando vai abrir a Scene
[TUTORIAL] Mudando material
Procuro programador Unity para jogo 2D
AJUDA REALISTIC CAR CONTROLLER
Chama para isqueiro
[RESOLVIDO] Ajuda para destruir objeto
Unity - Sistema de Giro da Tela - Ajuda pfv!
Unity - Touch na Tela do Celular
Dawn Of Hell - Horror Game BR (2022-2023)
Unity - Jogo online ou offline?
ANIMAÇÃO INIMIGO ESTÁ INDO PRA TUDO QUANTO É LADO
[RESOLVIDO] Erro de Script no Android
Bundle Assets, Resources, e Addressables
Jogo online (qual a melhor opção?)
Dúvida sobre como criar o inimigo IA!
Unity dando pause no jogo a cada 4 segundos
bom dia amigos eu sou meio lego nos scripts será que alguem pode me ajudar
JOGO "CHALLENGE" FINALIZADO E DISPONÍVEL PARA BAIXAR.
error CS0246
[TUTORIAL]Como Chamar Um Método Usando Uma String como Parametro
Dom Jun 04, 2023 2:41 pm
Ter maio 30, 2023 7:28 pm
Ter maio 30, 2023 6:04 am
Seg maio 29, 2023 7:53 pm
Sáb maio 27, 2023 3:11 pm
Sex maio 26, 2023 4:59 pm
Sex maio 26, 2023 11:27 am
Qui maio 25, 2023 10:33 am
Sáb maio 20, 2023 12:25 pm
Ter maio 16, 2023 5:43 pm
Ter maio 16, 2023 5:42 pm
Ter maio 09, 2023 7:42 pm
Seg maio 08, 2023 7:13 am
Seg maio 08, 2023 6:38 am
Seg maio 08, 2023 1:49 am
Sáb maio 06, 2023 11:44 pm
Sáb maio 06, 2023 6:42 pm
Sáb maio 06, 2023 1:35 am
Qua maio 03, 2023 12:32 pm
Seg maio 01, 2023 8:51 pm
Seg maio 01, 2023 12:29 pm
Dom Abr 30, 2023 8:49 pm
Dom Abr 30, 2023 5:06 pm
Sáb Abr 29, 2023 4:05 pm
Qui Abr 27, 2023 4:39 pm
Qui Abr 27, 2023 12:40 am
Ter Abr 25, 2023 5:33 pm
Ter Abr 25, 2023 10:23 am
Dom Abr 23, 2023 12:11 am
Sáb Abr 22, 2023 4:27 am
Sex Abr 21, 2023 11:38 pm
Sex Abr 21, 2023 10:21 pm
Qui Abr 20, 2023 4:57 pm
Qui Abr 20, 2023 12:28 pm
Qua Abr 19, 2023 3:03 pm
Qua Abr 19, 2023 1:52 pm
Qua Abr 19, 2023 11:59 am
Qua Abr 19, 2023 11:54 am
Sáb Abr 15, 2023 8:13 pm
Sex Abr 14, 2023 7:43 am
Qui Abr 13, 2023 4:36 pm
Qui Abr 13, 2023 4:36 pm
Qua Abr 12, 2023 6:05 pm
Ter Abr 11, 2023 6:22 pm
Seg Abr 10, 2023 7:33 pm
Seg Abr 10, 2023 3:25 pm
Dom Abr 09, 2023 8:53 pm
Dom Abr 09, 2023 7:26 pm
Dom Abr 09, 2023 5:59 pm
Dom Abr 09, 2023 12:06 am
Sex Abr 07, 2023 7:24 pm
Qui Abr 06, 2023 6:45 am
Qua Abr 05, 2023 9:24 am
Ter Abr 04, 2023 4:55 pm
Ter Abr 04, 2023 1:00 pm
Dom Abr 02, 2023 11:52 pm
Sex Mar 31, 2023 12:50 pm
Sex Mar 31, 2023 11:03 am
Sex Mar 31, 2023 10:05 am
Qua Mar 29, 2023 7:48 pm
Ter Mar 28, 2023 10:50 pm
Ter Mar 28, 2023 9:19 am
Seg Mar 27, 2023 10:16 am
Dom Mar 26, 2023 7:39 pm
Qui Mar 23, 2023 4:52 pm
Ter Mar 21, 2023 11:20 pm
Ter Mar 21, 2023 8:52 pm
Sáb Mar 18, 2023 8:41 pm
Sex Mar 17, 2023 3:12 pm
Sex Mar 17, 2023 1:24 pm
Seg Mar 13, 2023 10:45 pm
Seg Mar 13, 2023 9:48 pm
Seg Mar 13, 2023 8:24 pm
Seg Mar 13, 2023 7:17 pm
Dom Mar 12, 2023 10:27 pm
Dom Mar 12, 2023 7:22 pm
Sex Mar 10, 2023 8:26 pm
Sex Mar 10, 2023 8:00 pm
Qui Mar 09, 2023 9:05 am
Ter Mar 07, 2023 2:27 pm
Sex Mar 03, 2023 6:47 pm
Sex Mar 03, 2023 12:01 am
Qui Mar 02, 2023 4:00 pm
Qui Mar 02, 2023 1:35 pm
Qua Mar 01, 2023 5:47 pm
Qua Mar 01, 2023 2:11 am
Seg Fev 27, 2023 11:08 pm
Seg Fev 27, 2023 7:19 pm
Dom Fev 26, 2023 11:49 pm
Dom Fev 26, 2023 8:29 pm
Dom Fev 26, 2023 7:47 pm
Dom Fev 26, 2023 7:46 pm
Dom Fev 26, 2023 6:08 pm
Sáb Fev 25, 2023 8:16 pm
Seg Fev 13, 2023 7:02 pm
Seg Fev 13, 2023 2:44 am
Dom Fev 12, 2023 9:57 pm
Dom Fev 12, 2023 2:19 pm
Sáb Fev 11, 2023 1:01 pm



































































































quem pode me dizer porque isso todo para um simples script de movimento

2 participantes

Ir para baixo

DÚVIDA quem pode me dizer porque isso todo para um simples script de movimento

Mensagem por zeref Sáb Mar 20, 2021 9:48 pm

Ola meu povo blz 
bem vamos direto ao assunto primeiramente esse script não e meu mais sim de  muriloms do site da (U@ni@!tLi@s%@t)
 


sobre o script e bem Tenso mais Lindo ao mesmo tempo

como um script mais simples pode se tão complicado

gostaria de uma explicação porque ne? vivendo e aprendendo

quem puder responder eu agradeço

1 isso e para si mostra que sabe programa ?
2 para deixar o script mais robusto e a prova de falhas ?
3-evitar problemas críticos no desenvolvimento lá na frente
4- e como posso usar esse modelo de script no jogo
5- qual o método e esse e como e chamado (  eu sei que ele tem sistema de  hierarquia e criação de componentes)
6- outros motivos 

e também estou fazendo um script que faz tudo isso sem divide nada, mas ele está sendo desenvolvido
 então vamos usar como medida de comparação entre o meu e o dele ok
obs(ainda vou implantar um sistema de vida e escada nele ainda )

quero saber se o meu script vai falhar em algum momento do game ou não
e saber qual e o mais falho



meu script 
Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;


public class PleyerBese1 : MonoBehaviour
{

    // pulo Defalt

    bool estarnocao = false, estarPulando = false, dualJupmp = false;
    public float jumpForce = 10, raioDoGizmo = 0.5f;
    public Transform graudCheck; public Rigidbody2D rb2d;
    public LayerMask Grald;
    //movimento Defalt
    public SpriteRenderer sprite;
    public float Speed = 5, rumSpeed = 10, muver;
    
    

    

    

    
    private void Start()
    {
        rb2d = GetComponent<Rigidbody2D>();
        graudCheck = GameObject.Find("GroundChek").transform;
        //sprite = GetComponent<SpriteRenderer>();
        

    }
    private void Update()
    {     ///////////////////////////|\\\\\
          //(parte base do scrip)////////////////////////////////////////////|
          //verificadores de obstaculos EX( parede, ção, aqua, inimigos e etc)|
          /////////////////////////////////////////////////////////////////////|

        //Movimento en terra (Normal/ Defalt)
        muver = Input.GetAxis("Horizontal") * Speed;


        // pulo
        {
            estarPulando = Input.GetButtonDown("Jump");
            estarnocao = Physics2D.OverlapCircle(graudCheck.position, raioDoGizmo, Grald);
            if(estarnocao)
            {
                dualJupmp = false;

                Debug.Log("Estarpilano" + estarPulando);
                
            }
            
            
        }
    //
        
      
    }
    private void FixedUpdate()
    {
        Movimetono();

    }
    public void Movimetono()
    {
        rb2d.velocity = new Vector2(muver, rb2d.velocity.y);
        if ( muver >= 0 && sprite.flipX == false || muver <= 0 && sprite.flipX == true)
        {
            flip();
        }
      

        // movimeto em terra firme compativel com comtrole de xbom de PC
        

         flip();
        // sys pulo duplo
        if (estarPulando)
        {
            if (estarnocao)
            {
                DoJump();
                dualJupmp = true;
             //   Debug.Log("estar pulando1");
            }
            else if (!estarnocao && dualJupmp)
            {
                DoJump();
                dualJupmp = false;
               // Debug.Log("estar pulando2");
            }
        }
        void flip()
        {
            sprite.flipX = !sprite.flipX;
        }
        void DoJump()
            {
                rb2d.velocity = new Vector2(rb2d.velocity.x, 0);
                rb2d.AddForce(Vector2.up * jumpForce);
            }
    }


    private void OnDrawGizmos()
    {
        Gizmos.color = Color.red;
        Gizmos.DrawWireSphere(graudCheck.position, raioDoGizmo );
    }


}





aparte de agora e o script de muriloms 

script principal: CharacterComponents

Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class CharacterComponents : MonoBehaviour
{
    // Parametros para movimento
    protected float horizontalInput;

    // Pulo
    protected bool jumpPressed;

    // Dash
    protected bool dashPressed;

    // Componentes
    protected CharacterController _controller;
    protected CharacterMovement _movement;
    protected CharacterJump _jump;
    protected CharacterSensors _sensors;
    protected CharacterFlip _flip;
    protected Animator animator;
    protected Character _character;


    // Start is called before the first frame update
    protected virtual void Start()
    {
        _controller = GetComponent<CharacterController>();
        _character = GetComponent<Character>();
        _movement = GetComponent<CharacterMovement>();
        _jump = GetComponent<CharacterJump>();
        _sensors = GetComponent<CharacterSensors>();
        _flip = GetComponent<CharacterFlip>();
        animator = GetComponent<Animator>();
    }

    // Update is called once per frame
    protected virtual void Update()
    {
        HandleAbility();
    }

    // Método principal -- lógica de cada habilidade
    protected virtual void HandleAbility()
    {
        InternalInput();
        HandleInput();
    }

    /// Input necessario para executar acoes
    protected virtual void HandleInput()
    {

    }

    /// Input principais para controlar o agente - jogador
    protected virtual void InternalInput()
    {
        if (_character.CharacterType == Character.CharacterTypes.Player)
        {
            // Movimento horizontal
            horizontalInput = Input.GetAxisRaw("Horizontal");

            // Pulo
            jumpPressed = Input.GetButtonDown("Jump");

            // Dash
            dashPressed = Input.GetKeyDown(KeyCode.E);

        }
    }
}


Script secundário:CharacterMovement
Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class CharacterMovement : CharacterComponents
{
    [Header("Settings")]
    [SerializeField] private float walkSpeed = 4f;

    // Controle da velocidade de movimento - andar
    public float MoveSpeed { get; set; }

    // Parametros internos
    private readonly int walkMoveParamater = Animator.StringToHash("isWalk");

    protected override void Start()
    {
        base.Start();
        MoveSpeed = walkSpeed;
    }

    protected override void HandleAbility()
    {
        base.HandleAbility();

        MoveCharacter();
        UpdateAnimations();
  
    }

    // Movimentar agente pela velocidade atual
    private void MoveCharacter()
    {
        float movement = horizontalInput * MoveSpeed;
        _controller.MoveHorizontalCharacter(movement);
        
        if(movement > 0)
        {
            _flip.FaceDirection(1);
        }
        else if(movement < 0)
        {
            _flip.FaceDirection(-1);
        }
        else
        {
            return;
        }
        
    }

    // Update Animation
    private void UpdateAnimations()
    {
        if (Mathf.Abs(horizontalInput) > 0.1f)
        {
            if (_character.CharacterAnimator != null)
            {
                _character.CharacterAnimator.SetBool(walkMoveParamater, true);
            }
        }
        else
        {
            if (_character.CharacterAnimator != null)
            {
                _character.CharacterAnimator.SetBool(walkMoveParamater, false);
            }
        }
    }

    public void ResetSpeed()
    {
        MoveSpeed = walkSpeed;
    }
}

Script secundário: CharacterJump
Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class CharacterJump : CharacterComponents
{
    [Header("Settings")]
    [SerializeField] private float jumpForce = 10f;
    [SerializeField] private float jumpTime = 0.02f;

    // Controle forca do pulo
    public float JumpForce { get; set; }
    
    // Parametros internos
    private bool isJumping;
    private float jumpTimeCounter;

    private readonly int jumpParamater = Animator.StringToHash("isJump");

    protected override void Start()
    {
        base.Start();
        JumpForce = jumpForce;
    }

    
    protected override void HandleAbility()
    {
        base.HandleAbility();

        if (jumpPressed && _sensors.OnGround)
        {
            // Parametros definidos para pulo
            isJumping = true;
            jumpTimeCounter = jumpTime;

            // Acao pulo
            Jump();

            // Animation
            UpdateAnimations();
        }

        // Pulo Duplo
        if (jumpPressed && isJumping)
        {
            if(jumpTimeCounter > 0)
            {
                Jump();
                jumpTimeCounter -= Time.deltaTime;
            }
            else
            {
                isJumping = false;
            }
        }

    }

    private void Jump()
    {
        _controller.MoveVerticalCharacter(JumpForce);

    }

    // Update Animation
    private void UpdateAnimations()
    {
        if (jumpPressed)
        {
            if (_character.CharacterAnimator != null)
            {
                _character.CharacterAnimator.SetTrigger(jumpParamater);
            }
        }
        
    }
}

s
Script secundário: CharacterFlip
Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class CharacterFlip : CharacterComponents
{
    
    // Returns if our character is facing Right
    public bool FacingRight { get; set; }

    private void Awake()
    {
        FacingRight = true;
    }

    

    // Makes our character face the direction in which is moving
    public void FaceDirection(int newDirection)
    {
        if (newDirection == 1)
        {
            _controller.SetDirectionCharacter(new Vector3(0, 0, 0));
            FacingRight = true;
        }
        else
        {
            _controller.SetDirectionCharacter(new Vector3(0, 180, 0));
            FacingRight = false;
        }
    }
}

s

Script secundário: CharacterDash
Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class CharacterDash : CharacterComponents
{
    public enum DashState
    {
        Ready,
        Dashing,
        Cooldown
    }

    [Header("Settings")]
    [SerializeField] private float speedDash = 4f;
    [SerializeField] private float dashTimer;
    [SerializeField] private float maxDash = 2f;

    // Parametros internos
    private Vector2 savedVelocity;
    private DashState dashState;
    
    private readonly int dashMoveParamater = Animator.StringToHash("isDash");


    protected override void HandleAbility()
    {
        base.HandleAbility();

        UpdateAnimations();

        // Definir possibilidade de executar o Dash
        switch (dashState)
        {
            case DashState.Ready:
                if (dashPressed)
                {
                    Dash();
                    
                    dashState = DashState.Dashing;
                }
                break;
            case DashState.Dashing:
                dashTimer += Time.deltaTime * 3;
                if (dashTimer >= maxDash)
                {
                    dashTimer = maxDash;
                    StopDash();
                    dashState = DashState.Cooldown;
                }
                break;
            case DashState.Cooldown:
                dashTimer -= Time.deltaTime;
                if (dashTimer <= 0)
                {
                    dashTimer = 0;
                    dashState = DashState.Ready;
                }
                break;
        }
    }

    // Acao do Dash
    private void Dash()
    {
        _movement.MoveSpeed = _movement.MoveSpeed * speedDash;
    }

    // Parar dash
    private void StopDash()
    {
        _movement.ResetSpeed();
    }

    // Update Animation
    private void UpdateAnimations()
    {
        if (dashPressed)
        {
            if (_character.CharacterAnimator != null)
            {
                _character.CharacterAnimator.SetTrigger(dashMoveParamater);
            }
        }

    }
}

s

Script secundário: CharacterMovement

s
zeref
zeref
Iniciante
Iniciante

Masculino PONTOS : 1443
REPUTAÇÃO : 0
Áreas de atuação : Unity : programador C# Iniciante e + ou -Intermediário
Respeito as regras : quem pode me dizer porque isso todo para um simples script de movimento  WvDYdlf

https://github.com/Vinicius-Melo-VMS

Ir para o topo Ir para baixo

DÚVIDA Re: quem pode me dizer porque isso todo para um simples script de movimento

Mensagem por MarcosSchultz Dom Mar 21, 2021 2:49 am

Eeeentão, o cara está usando o conceito de Orientação a Objeto... Em tese, seria o certo de se trabalhar na Unity, embora eu não seja muito fã disso.

A filosofia de Orientação a objeto é meio que ter um código para cada coisinha, então tipo, você quer que o seu personagem pule, você só arrasta o script de pulo pra ele... você quer que ele ande, só arrasta o script de movimento pra ele e tal. Mas pessoalmente, não curto muito essa abordagem não.
MarcosSchultz
MarcosSchultz
Administrador

Masculino PONTOS : 64433
REPUTAÇÃO : 2643
Idade : 26
Áreas de atuação : Administrador do fórum
Respeito as regras : quem pode me dizer porque isso todo para um simples script de movimento  Aad8pUi

https://www.schultzgames.com

Ir para o topo Ir para baixo

Ir para o topo

- Tópicos semelhantes

 
Permissões neste sub-fórum
Não podes responder a tópicos