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:
Delay na animação
Utilizar um software que não pode ser usado para fins comerciais
Unity 3D Pulo do Personagem na hora em que o Personagem está saindo do chão
Colocar o código certo para abrir porta
Ajuda em documentação de shader
+1 OW 2
movimtnos com Motodo void
Bug unity android UI
Component Cloth unity
Inimigo detecta outro Inimigo.
Instanciar objetos e controla los!!
[TUTORIAL] AI Enemy 2.0 + animações ( Jogos de terror )
List
não deixar que exista dois DontDestroyOnLoad
Cronometro par Inimigo como se faz ?
Peso de processamento de modelos 3D
[TUTORIAL] Sistema simples para VOLTAR NO TEMPO, Unity 3D
Passar texturas de Maya para unity
Assets tirando fisica do terreno
teleportar o player quando ele cair fora do mapa
3D Text Material Sobressalente
Passar as texturas do Blender para a Unity
Não consigo alterar "nada" no unity
Erro no SketchUP
Como habilitar um scritpt depois que ele foi desabilitado
Arrastar e conectar
Math Key Puzzle (Disponível na Play Store)
(Duvida) Melhor versão da unity para projetos 3D
Como criar uma Barra de Ataque speed para um personagem
Script não funcionando.
Eixos trocados na movimentação do jogador
Como desenvolver um sistema de colisão sem usar os componentes da Unity?
Collab Arruinando meu Projeto
Oportunidade de Freelancer
Alguém sabe como criar um objeto aleatório
Movimentação de jogador através de animação
Achar objeto que não esta na cena
Chamar um objeto FBX para a cena por meio de um botão
(Dúvida) dificuldade em modelagem e animações
Como faço pra um objeto/item acionar um evento?
Como posso fazer uma barra de vida encher denovo
Textura escura
Animação em texto
Mesh Collider
[FORMAÇÃO DE EQUIPE] PERSONAGENS E ITENS PIXEL ART
Top Tipos de Jogos Mobile Android
Programe seus jogos mesmo sem saber C# (BOLT ⚡)
Dúvida sobre Character Controller
Testadores/ Voluntários - De olho na fake (jogo Educativo)
Ajuda com Cutscene
Ajuda com key em script
BTD(Brazil Tower Defense) WIP
Como criar vários objetos a partir de um? (Unity)
Objeto 3D
Posição bloco/tile endless 2D
Como acessar a função de um outro Script? (Unity)
todo filho herda a tag do pai ?
[TUTORIAL] Como fazer um TELEPORTE
Duvida sobre exceso de declaracao de variaveis publicas.
Como aumentar o tamanho de um objeto no eixo Z por um slider?
Duvida sobre proteção de projeto na unity.
Como jogo o valor de uma Int em uma IEnumerator?
Como faço para desativar o pós-processamento em outra cena
[TUTORIAL] Inteligência artificial, inimigo e AIPoints
Textura no material importado
PHP
Ajuda em Modelo 3D
Como limitar ate onde a câmera do unity2D pode ir?
Standard Assets para UNITY 5 em ".unitypackage"
Como faço pra carregar os itens de uma Cena Para outra?
Joystick mobile
Cenário se reposicionar no eixo z, quando o player se move pelo cenário.
Mudar a cor de um material Alpha Blended por script
como faço para o personagem andar só que no ar?
[TUTORIAL] Teleporte
Ajuda com IA de inimigo
Qual o tutorial mais simples sobre criar um personagem 3d com melee attack?
Colider--Unity
[TUTORIAL] Unity 5 - Como criar o próprio FPS Controller
Como rodar tela de Gameover?
(Duvida) Como criar um sistema de dialogos?
carregar um mapa por .txt
Como obter dados do Grid Layout Group.
Camera em primeira pessoa que mostra o corpo
Plataforma Flutuante
como faço um multiplayer na unity 5?
SCRIPT TIRO - UNITY 3d
Online Shooting Android
Um projeto sem nome ainda (Fazendo nas horas vagas)
[ FIND ME ] Game em Desenvolvimento
[Projeto em Andamento] Favela Combat - Multiplayer online (Android & iOS)
Baixos Brasil - Jogo de Carro Brasileiro!
Riders Of Dungeons - Jogo RPG Souls like
[TUTORIAL] Unity 5 - Wheel Collider, veículos, suspensão realista.
Duvida sobre .asset
Escape from the hospital (Em teste)
Ajuda com gameObject
Ajuda com erro no package de pós-processamento
Shader Graph, mateiral rosa???
Hoje à(s) 3:12 am
Hoje à(s) 2:05 am
Ontem à(s) 10:55 pm
Ontem à(s) 7:47 pm
Ontem à(s) 7:41 pm
Qua Abr 14, 2021 8:17 pm
Qua Abr 14, 2021 4:47 pm
Ter Abr 13, 2021 8:17 pm
Ter Abr 13, 2021 7:45 pm
Ter Abr 13, 2021 6:17 pm
Ter Abr 13, 2021 2:57 pm
Ter Abr 13, 2021 10:08 am
Dom Abr 11, 2021 3:31 pm
Dom Abr 11, 2021 12:03 am
Sab Abr 10, 2021 2:47 pm
Sex Abr 09, 2021 10:11 pm
Sex Abr 09, 2021 5:23 pm
Sex Abr 09, 2021 2:10 pm
Sex Abr 09, 2021 1:21 pm
Qui Abr 08, 2021 8:11 pm
Qui Abr 08, 2021 8:06 pm
Qui Abr 08, 2021 6:50 pm
Qui Abr 08, 2021 6:44 pm
Qui Abr 08, 2021 11:24 am
Qui Abr 08, 2021 11:23 am
Qui Abr 08, 2021 8:17 am
Qua Abr 07, 2021 8:34 pm
Qua Abr 07, 2021 7:39 pm
Qua Abr 07, 2021 5:27 pm
Qua Abr 07, 2021 3:27 pm
Qua Abr 07, 2021 12:03 pm
Qua Abr 07, 2021 8:43 am
Qua Abr 07, 2021 6:27 am
Ter Abr 06, 2021 1:17 pm
Ter Abr 06, 2021 12:44 pm
Ter Abr 06, 2021 12:40 pm
Seg Abr 05, 2021 3:41 pm
Seg Abr 05, 2021 1:19 pm
Dom Abr 04, 2021 11:55 pm
Dom Abr 04, 2021 10:02 pm
Dom Abr 04, 2021 7:03 pm
Dom Abr 04, 2021 5:53 pm
Dom Abr 04, 2021 12:14 pm
Dom Abr 04, 2021 1:06 am
Sab Abr 03, 2021 8:26 pm
Sab Abr 03, 2021 8:06 pm
Sab Abr 03, 2021 7:20 pm
Sab Abr 03, 2021 1:23 pm
Sex Abr 02, 2021 2:14 am
Qui Abr 01, 2021 9:34 pm
Qui Abr 01, 2021 5:18 pm
Qui Abr 01, 2021 4:57 pm
Qui Abr 01, 2021 7:42 am
Qua Mar 31, 2021 9:36 pm
Qua Mar 31, 2021 10:41 am
Ter Mar 30, 2021 8:53 pm
Ter Mar 30, 2021 8:49 pm
Ter Mar 30, 2021 3:10 pm
Ter Mar 30, 2021 1:38 pm
Ter Mar 30, 2021 12:35 pm
Seg Mar 29, 2021 11:07 pm
Seg Mar 29, 2021 8:37 pm
Seg Mar 29, 2021 8:16 pm
Seg Mar 29, 2021 5:32 pm
Seg Mar 29, 2021 1:53 pm
Dom Mar 28, 2021 4:13 pm
Dom Mar 28, 2021 1:19 am
Dom Mar 28, 2021 12:17 am
Sab Mar 27, 2021 10:30 pm
Sab Mar 27, 2021 8:33 pm
Sab Mar 27, 2021 8:06 pm
Sab Mar 27, 2021 2:51 pm
Sab Mar 27, 2021 8:53 am
Sab Mar 27, 2021 8:05 am
Sex Mar 26, 2021 3:15 pm
Sex Mar 26, 2021 12:50 pm
Sex Mar 26, 2021 8:28 am
Sex Mar 26, 2021 7:05 am
Qui Mar 25, 2021 7:16 pm
Qui Mar 25, 2021 7:13 pm
Qui Mar 25, 2021 2:44 pm
Qui Mar 25, 2021 11:20 am
Qui Mar 25, 2021 9:15 am
Qua Mar 24, 2021 7:56 pm
Qua Mar 24, 2021 7:53 pm
Qua Mar 24, 2021 6:54 pm
Qua Mar 24, 2021 1:01 pm
Qua Mar 24, 2021 12:27 pm
Qua Mar 24, 2021 12:04 pm
Qua Mar 24, 2021 12:03 pm
Qua Mar 24, 2021 12:02 pm
Qua Mar 24, 2021 11:59 am
Qua Mar 24, 2021 11:56 am
Qua Mar 24, 2021 10:08 am
Ter Mar 23, 2021 10:35 pm
Ter Mar 23, 2021 9:49 pm
Ter Mar 23, 2021 5:14 pm
Ter Mar 23, 2021 1:59 pm
Ter Mar 23, 2021 10:32 am
WLCS22
WLCS22
WLCS22
Joana
Joana
hellside
dutrabr100
poyser
capim22
hellside
dutrabr100
RenanHero
Kleber Lucas
diegopds
dutrabr100
ronigleydson
Chilinger
ffabim
tendrozino
gui78h3
MRX
Magnatah
Magnatah
Edivandro2706
Kleber Lucas
Pokedlg
poyser
poyser
kingalphaz1
BrunaFelicio
backup
dutrabr100
conceptfac
Chilinger
luizphelipe
dutrabr100
dutrabr100
SauloeArthur
poyser
Triskal
luizphelipe
darkrj
dutrabr100
Anderson Mello
tulio filipe
rr indie games
Triskal
rr indie games
danielPedra90
Triskal
Triskal
rr indie games
PauloR2811
diegopds
LGC
Pokedlg
adenilson romao
Triskal
rr indie games
Fagner
loucoporjogo
rafaelllsd
Charlesoff
michelcreis@hotmail.com
Edivandro2706
Fagner
adrianobros2
Sergio1223
Zyll
Triskal
RGT2020
dutrabr100
jeancvo3
dkdetroi
Triskal
Charlesoff
dutrabr100
Fagner
dutrabr100
SamusAran
MayLeone
gui78h3
loucoporjogo
RGT
RGT
RGT
faustommat
Daniel Dória
bobESquisito
bobESquisito
bobESquisito
bobESquisito
bobESquisito
michelcreis@hotmail.com
Suphit
bobESquisito
Pokedlg
Charlesoff
Mafuyu

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

Ir em 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 : 656
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

Voltar ao Topo Ir em 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 : 63481
REPUTAÇÃO : 2570
Idade : 24
Á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

Voltar ao Topo Ir em baixo

Voltar ao Topo


 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum