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:
Maximizar view da cam
Tem como fazer o inimigo andar até dar de cara com o player?
Tirar foto e exportar pro jogo
Trocar de cena ao matar inimigo
Mudar qualidade das texturas por código?
[Projeto] Jogo Ambientado no Brasil para Android
Como criar um botãoUI que liga e desliga uma lista de objetos?
Unity - Imagem no formato de um triângulo?
Gráficos estilo Genshin
level system problema
Como calcular distância entre dois pontos
Posicao do objeto diferente do setado no codigo
Sistema de pulo 3D
Procuro programador Unity para jogo 2D
Pessoal saiu a versão de testes do meu novo jogo, o Sanatório Macabro
Cinemachine - trocar de camera usando uma tecla e mouse 'lockScreen'
Sistema completo de nivel com XP + PayTime
Limitar arrays e fazer sortear um valor apenas uma vez
Como faço para variável voltar para o valor inicial
Duvida com getAxis
Fazer um detetive para sair apenas 1 vez o resultado do sorteio
Jogos NTFs
Salvar variável temporária com PlayerPrefs!?
Alguém sabe fazer uma AI para o inimigo seguir o Player em um jogo Top Down
Bug com modelo ficando invisível
Erro em sistema de dialogo...
Terreno Procedural
sistema de estamina,vida,fome e sede
Posição do object diferente do código quando está em tempo real!?
FORMACAO DE EQUIPE
sistema de câmera + movimentação do player
Erro no Photon Pun 2 (InvalidCastException: Specified cast is not valid)
Procuro modelador 3D para futuro Game
A procura de um MODELADOR pra desenvolver jogo pra estudo.
Script do marcos (Como colocar um limite de Spawn)
Multiplayer
Photon 2 outros Players
QR Code + Unity + KinderOvo (Opinião)
Colisão 2d
Câmera Primeira pessoa / Movimentação
Polígonos do modelo são destorcidos ao importar na unity, como resolver?
Ativar luz e objeto sumir
duvida sobre servidor
Como converter um projeto da Unity para o PlayCanvas?
Sistema de inventario
Alguem me ajuda, minha animaçao depois de um tempo congela
COMO TROCAR FORMA DE ATAQUE DO (CLICK DO MOUSE para BOTÃO UI MOBILE)
problemas com rotacao da camera!!
Dúvida com Procedural mesh e Bezier Curves
Sols Like Projeto iniciando!
[TUTORIAL] AI Enemy 2.0 + animações ( Jogos de terror )
crowdfunding para jogos
Colisão realista?
Sobreposição de mapa de luz, gerar mapa de luz?
Script único para todos os veículos no jogo?
Como procurar um lugar vazio para spawnar monstro
Como eu posso fazer uma cutscene ilustrada com imagens?
Erro com rotacao de objeto
Veiculos Para o Unity!
Objetos de outras cenas
Como alterar a Speed da anim por código?
Verificar espaco se ocupado ou nao e limitar as instancias!!
pegar fiho de objeto instanciado!!!
alterar cor via script
[DÚVIDA] Câmera estilo FNAF
instanciar com rotacao!!
Problema com canvas/panel e objetos
ANIMAL fugir
Seguir ponto por trigger
Novo input system
Procuro programador para Sistema de Pets na Unity
[TUTORIAL] Sistema de tiro com RAYCAST (várias armas, mira laser, munição, dano, etc, etc)
Dúvidas em geral - Como faço para colocar os gráficos estilo jogos antigos?
Movimentação PointerDown e PointerUp em peças spawn com botões UI
points linerenderer
Problemas em dividir controles em multiplayer
Jogador salvar controle
[TUTORIAL] State Machine mas simples do universo kkkk
Procuro programador para JOGO DE TERROR
Fazer pontuação aparecer momentaneamente e sumir dando erro
Alguém sabe reproduzir esse efeito do video na Unity?
Multiplayer com Unity + NOde
Clique duplo em um botão?
Como criar um objeto só quando colider com outro?
[TUTORIAL] Agachar, correr e sistema de estamina ( C# )
Objetos de outras cenas
O jogo bugou e os sliders e o joystick não estão funcionando, apenas botões
Component Cloth unity
Como reproduzir efeito "respirar" ao parar a camera
[TUTORIAL] Reconhecimento de dinheiro
Informações que ficam salvas para chamar em outras cenas (Idioma, Nick)
Limitar movimento da camera com imput android!!
Como fazer texto do Script entrar no UI
SOU MODELADOR DE MODELOS LOW POLY MEDIUM PRECISANDO E SO CHAMAR
jogo de corrida
[SCRIPT] Ler Texto em .TXT Por Chave
ajuda com sincronização jogo de botão
IA para multiplos inimigos
Como fazer um modo multiplayer em um jogo que está off-line?
Hoje à(s) 7:19 pm
Hoje à(s) 6:42 pm
Hoje à(s) 4:19 pm
Ontem à(s) 9:02 pm
Ontem à(s) 10:17 am
Ontem à(s) 8:21 am
Qui Dez 02, 2021 8:38 pm
Qui Dez 02, 2021 4:39 pm
Qui Dez 02, 2021 12:00 pm
Ter Nov 30, 2021 3:52 pm
Ter Nov 30, 2021 12:14 pm
Seg Nov 29, 2021 5:18 pm
Seg Nov 29, 2021 5:17 pm
Seg Nov 29, 2021 1:17 pm
Dom Nov 28, 2021 11:52 am
Dom Nov 28, 2021 1:30 am
Sab Nov 27, 2021 4:57 am
Sex Nov 26, 2021 5:53 pm
Sex Nov 26, 2021 12:16 pm
Qui Nov 25, 2021 6:15 pm
Qui Nov 25, 2021 3:31 pm
Qua Nov 24, 2021 2:01 am
Ter Nov 23, 2021 5:11 pm
Ter Nov 23, 2021 3:48 pm
Ter Nov 23, 2021 1:12 pm
Ter Nov 23, 2021 12:38 pm
Seg Nov 22, 2021 3:20 pm
Seg Nov 22, 2021 2:29 am
Dom Nov 21, 2021 12:52 pm
Dom Nov 21, 2021 11:02 am
Dom Nov 21, 2021 3:36 am
Sab Nov 20, 2021 10:35 pm
Sex Nov 19, 2021 11:54 pm
Sex Nov 19, 2021 11:51 pm
Sex Nov 19, 2021 11:08 pm
Sex Nov 19, 2021 7:08 pm
Sex Nov 19, 2021 5:23 pm
Sex Nov 19, 2021 12:57 pm
Qui Nov 18, 2021 7:12 pm
Qui Nov 18, 2021 10:37 am
Qui Nov 18, 2021 10:17 am
Seg Nov 15, 2021 11:18 pm
Seg Nov 15, 2021 11:15 pm
Seg Nov 15, 2021 10:13 am
Seg Nov 15, 2021 9:48 am
Qui Nov 11, 2021 8:49 pm
Qui Nov 11, 2021 1:31 pm
Qui Nov 11, 2021 7:31 am
Qua Nov 10, 2021 8:19 pm
Ter Nov 09, 2021 7:05 pm
Ter Nov 09, 2021 5:05 pm
Ter Nov 09, 2021 4:11 pm
Ter Nov 09, 2021 1:07 pm
Seg Nov 08, 2021 7:36 pm
Dom Nov 07, 2021 8:44 pm
Sab Nov 06, 2021 10:51 pm
Sex Nov 05, 2021 10:04 pm
Sex Nov 05, 2021 7:50 pm
Sex Nov 05, 2021 3:48 pm
Sex Nov 05, 2021 10:24 am
Sex Nov 05, 2021 2:13 am
Qui Nov 04, 2021 6:48 pm
Qui Nov 04, 2021 6:09 pm
Qui Nov 04, 2021 5:39 pm
Qui Nov 04, 2021 5:00 pm
Qui Nov 04, 2021 3:55 pm
Qui Nov 04, 2021 2:45 pm
Qui Nov 04, 2021 4:56 am
Qua Nov 03, 2021 4:04 pm
Qua Nov 03, 2021 3:54 pm
Qua Nov 03, 2021 11:48 am
Qua Nov 03, 2021 8:18 am
Ter Nov 02, 2021 6:02 pm
Ter Nov 02, 2021 5:42 pm
Ter Nov 02, 2021 10:55 am
Ter Nov 02, 2021 10:44 am
Seg Nov 01, 2021 9:40 pm
Seg Nov 01, 2021 7:32 pm
Seg Nov 01, 2021 1:01 pm
Seg Nov 01, 2021 11:21 am
Dom Out 31, 2021 2:39 pm
Sab Out 30, 2021 3:05 pm
Sab Out 30, 2021 2:43 pm
Sab Out 30, 2021 2:40 pm
Sab Out 30, 2021 11:23 am
Qui Out 28, 2021 12:04 pm
Qua Out 27, 2021 7:49 pm
Qua Out 27, 2021 7:47 pm
Qua Out 27, 2021 3:11 pm
Qua Out 27, 2021 2:51 pm
Ter Out 26, 2021 6:01 pm
Ter Out 26, 2021 5:49 pm
Seg Out 25, 2021 8:53 pm
Seg Out 25, 2021 8:17 pm
Seg Out 25, 2021 7:33 pm
Seg Out 25, 2021 1:57 am
Dom Out 24, 2021 8:10 pm
Dom Out 24, 2021 5:36 pm
Dom Out 24, 2021 12:48 pm
Joana
ryanmorj16
giowde
MayLeone
stratengine
Crash Psycho
verme1311
MayLeone
Gabriel M
Valakinhas
Xavier
JãoArts
JãoArts
joaozinpedrin
Patrick
jeronimo Collares
M4x
EricknhYT
Charlesoff
capim22
EricknhYT
artplayer
M4x
M4x
Charlesoff
NoctisDregon
SgtMatuto
Pkneves
M4x
classicandsimple
Pkneves
EricknhYT
SeTk
SeTk
verme1311
Gamergame
claudiano2020
heyviic
joaozinpedrin
Gamergame
Crash Psycho
Zack2
Zack2
Atho
igorobm
Fzinx
igorobm
capim22
AgrrgA
hellside
Zack2
Zack2
igorobm
NoctisDregon
ProBrStalker
igorobm
brunort1
Zack2
Herovine Hl
Zack2
igorobm
capim22
Zack2
Zack2
Zack2
Zack2
joaozinpedrin
MadCow
eduardonog30
Zack2
Etoeu
junio132sj
Pedro432Joao
HugoTavares
Charlesoff
Charlesoff
Zack2
hendrick22
Cristhofer Marques
eduardonog30
AmazingDeliciano
Vorzoolvan
M4x
FelipeSouza11
Herovine Hl
joaozinpedrin
JulioWinchester
capim22
Zack2
Zack2
TIKO
capim22
EricknhYT
claudiano2020
TIKO
FelipeSouza11
claudiano2020
Zack2
Dom3000

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 Sab 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
Iniciante
Iniciante

Masculino PONTOS : 888
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 : 63756
REPUTAÇÃO : 2590
Idade : 25
Á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


 
Permissões neste fórum
Você não pode responder aos tópicos