Como encurtar e melhorar meu código, elevador(+ dúvida sobre programação em unity)
3 participantes
Página 1 de 1
Como encurtar e melhorar meu código, elevador(+ dúvida sobre programação em unity)
Olá galera,fiz um script básico de um elevador automático e gostaria de saber como melhorar meu código. Sem tantos ifs ou elses
mais uma dúvida, existe código bom e código ruim, mesmo que os 2 funcionem?
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class elevator : MonoBehaviour {
float speed = 9f;
Rigidbody2D Rb;
public bool subir = false;
public bool descer = false;
bool mover = true;
// Use this for initialization
void Start () {
Rb = GetComponent<Rigidbody2D> ();
}
// Update is called once per frame
void Update () {
Movimentacao ();
}void OnTriggerEnter2D(Collider2D col){
if(col.gameObject.tag=="cima"){
StartCoroutine(Eleva());
}if(col.gameObject.tag=="baixo"){
StartCoroutine(Eleval());
}
}
IEnumerator Eleva(){
mover = false;
yield return new WaitForSeconds(5);
subir = true;
mover = true;
}IEnumerator Eleval(){
mover = false;
subir = false;
yield return new WaitForSeconds(5);
descer = true;
mover = true;
} void Movimentacao(){
Rb.velocity = new Vector2 (0, -9f * Time.deltaTime);
if (subir == true && mover == true) {
Rb.velocity = new Vector2 (0, speed * Time.deltaTime);
}if (mover == false && subir == false && descer == false) {
Rb.velocity = new Vector2 (0, 0);
}if (descer == true && mover == true && subir == false) {
Rb.velocity = new Vector2 (0, -9f * Time.deltaTime);
}
}
}
mais uma dúvida, existe código bom e código ruim, mesmo que os 2 funcionem?
AprDev- Iniciante
- PONTOS : 2336
REPUTAÇÃO : 1
Respeito as regras :
Re: Como encurtar e melhorar meu código, elevador(+ dúvida sobre programação em unity)
Tocou minha mente e realmente está certo, quanto melhor a possibilidade de leitura do código melhor o entendimento. A semântica do mesmo pode por muitas vezes diminuir ou almentar (mas suavizado) em seu tamanho. No caso da sua pergunta, sim existe código ruim e código bom mesmo os 2 em bom funcionamento.
Tegh- Avançado
- PONTOS : 2656
REPUTAÇÃO : 97
Idade : 23
Respeito as regras :
Re: Como encurtar e melhorar meu código, elevador(+ dúvida sobre programação em unity)
Seu código é bom, mas acho que é possível comprimi-lo. Vou pegar seu código e dar uma testada beleza!?!AprDev escreveu: Olá galera,fiz um script básico de um elevador automático e gostaria de saber como melhorar meu código. Sem tantos ifs ou elses
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class elevator : MonoBehaviour {
float speed = 9f;
Rigidbody2D Rb;
public bool subir = false;
public bool descer = false;
bool mover = true;
// Use this for initialization
void Start () {
Rb = GetComponent<Rigidbody2D> ();
}
// Update is called once per frame
void Update () {
Movimentacao ();
}void OnTriggerEnter2D(Collider2D col){
if(col.gameObject.tag=="cima"){
StartCoroutine(Eleva());
}if(col.gameObject.tag=="baixo"){
StartCoroutine(Eleval());
}
}
IEnumerator Eleva(){
mover = false;
yield return new WaitForSeconds(5);
subir = true;
mover = true;
}IEnumerator Eleval(){
mover = false;
subir = false;
yield return new WaitForSeconds(5);
descer = true;
mover = true;
} void Movimentacao(){
Rb.velocity = new Vector2 (0, -9f * Time.deltaTime);
if (subir == true && mover == true) {
Rb.velocity = new Vector2 (0, speed * Time.deltaTime);
}if (mover == false && subir == false && descer == false) {
Rb.velocity = new Vector2 (0, 0);
}if (descer == true && mover == true && subir == false) {
Rb.velocity = new Vector2 (0, -9f * Time.deltaTime);
}
}
}
mais uma dúvida, existe código bom e código ruim, mesmo que os 2 funcionem?
Tegh- Avançado
- PONTOS : 2656
REPUTAÇÃO : 97
Idade : 23
Respeito as regras :
Re: Como encurtar e melhorar meu código, elevador(+ dúvida sobre programação em unity)
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
[RequireComponent(typeof(Rigidbody2D))]
public class elevator : MonoBehaviour {
private Rigidbody2D Rb { get { return GetComponent<Rigidbody2D>(); } set { Rb = value; } }
public bool subir = false;
public bool descer = false;
bool mover = true;
void FixedUpdate () {
Rb.velocity = Vector2.up * -9f * Time.deltaTime;
if (subir && mover)
Rb.velocity = Vector2.up * 9f * Time.deltaTime;
if (!mover && !subir && !descer)
Rb.velocity = Vector2.zero;
if (descer && mover && !subir)
Rb.velocity = Vector2.up * -9f * Time.deltaTime;
}
void OnTriggerEnter2D(Collider2D col){
StartCoroutine(Eleva(col.gameObject.tag));
}
IEnumerator Eleva(string res){
mover = false;
subir = false;
yield return new WaitForSeconds(5);
if (string.Equals(res, "cima")){
subir = true;
mover = true;
}
else if (string.Equals(res, "baixo"){
descer = true;
mover = true;
}
}
}
Pode ter uns errinhos. Não fiz pelo Visual Studio.
#EDIT: Acabei de testar no Visual Studio 2017, tem um erro, acabei de consertar, deve funcionar bem agora.
Última edição por NKKF em Sáb Jul 14, 2018 11:48 pm, editado 1 vez(es)
NKKF- ProgramadorMaster
- PONTOS : 4820
REPUTAÇÃO : 574
Idade : 20
Áreas de atuação : Desenvolvedor na Unity, NodeJS, React, ReactJS, React Native, MongoDB e Firebase.
Respeito as regras :
Re: Como encurtar e melhorar meu código, elevador(+ dúvida sobre programação em unity)
Fica a vontadeTegh escreveu:Seu código é bom, mas acho que é possível comprimi-lo. Vou pegar seu código e dar uma testada beleza!?!AprDev escreveu: Olá galera,fiz um script básico de um elevador automático e gostaria de saber como melhorar meu código. Sem tantos ifs ou elses
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class elevator : MonoBehaviour {
float speed = 9f;
Rigidbody2D Rb;
public bool subir = false;
public bool descer = false;
bool mover = true;
// Use this for initialization
void Start () {
Rb = GetComponent<Rigidbody2D> ();
}
// Update is called once per frame
void Update () {
Movimentacao ();
}void OnTriggerEnter2D(Collider2D col){
if(col.gameObject.tag=="cima"){
StartCoroutine(Eleva());
}if(col.gameObject.tag=="baixo"){
StartCoroutine(Eleval());
}
}
IEnumerator Eleva(){
mover = false;
yield return new WaitForSeconds(5);
subir = true;
mover = true;
}IEnumerator Eleval(){
mover = false;
subir = false;
yield return new WaitForSeconds(5);
descer = true;
mover = true;
} void Movimentacao(){
Rb.velocity = new Vector2 (0, -9f * Time.deltaTime);
if (subir == true && mover == true) {
Rb.velocity = new Vector2 (0, speed * Time.deltaTime);
}if (mover == false && subir == false && descer == false) {
Rb.velocity = new Vector2 (0, 0);
}if (descer == true && mover == true && subir == false) {
Rb.velocity = new Vector2 (0, -9f * Time.deltaTime);
}
}
}
mais uma dúvida, existe código bom e código ruim, mesmo que os 2 funcionem?
AprDev- Iniciante
- PONTOS : 2336
REPUTAÇÃO : 1
Respeito as regras :
Re: Como encurtar e melhorar meu código, elevador(+ dúvida sobre programação em unity)
Showww man^^ vou mudar aqui, esse código seu parece bem mais otimizado. vlw msmNKKF escreveu:
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
[RequiereComponent(typeof(Rigidbody2D))]
public class elevator : MonoBehaviour {
private Rigidbody2D Rb { get { return GetComponent<Rigidbody2D>(); } set { Rb = value; } }
public bool subir = false;
public bool descer = false;
bool mover = true;
void FixedUpdate () {
Rb.velocity = Vector2.up * -9f * Time.deltaTime;
if (subir && mover)
Rb.velocity = Vector2.up * 9f * Time.deltaTime;
if (!mover && !subir && !descer)
Rb.velocity = Vector2.zero;
if (descer && mover && !subir)
Rb.velocity = Vector2.up * -9f * Time.deltaTime;
}
void OnTriggerEnter2D(Collider2D col){
StartCoroutine(Eleva(col.gameObject.tag));
}
IEnumerator Eleva(string res){
mover = false;
subir = false;
yield return new WaitForSeconds(5);
if (string.Equals(res, "cima")){
subir = true;
mover = true;
}
else if (string.Equals(res, "baixo"){
descer = true;
mover = true;
}
}
}
Pode ter uns errinhos. Não fiz pelo Visual Studio.
AprDev- Iniciante
- PONTOS : 2336
REPUTAÇÃO : 1
Respeito as regras :
Tópicos semelhantes
» Duvida sobre Programação
» Duvida sobre programação para jogos de android.
» Duvidas sobre Programação, Banco de Dados, PHP/XML em Unity, Json ou PlayerPrefs?
» duvida sobre C# e unity
» Duvida Sobre Unity 3d
» Duvida sobre programação para jogos de android.
» Duvidas sobre Programação, Banco de Dados, PHP/XML em Unity, Json ou PlayerPrefs?
» duvida sobre C# e unity
» Duvida Sobre Unity 3d
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos