Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Temas - Rootet

#1
Scripting / Aumentar la velocidad de un personaje
Agosto 25, 2019, 07:16:12 PM
Buenas a todos, estoy con un juego de plataforma en 2D, recién empezando. Necesito añadir algo en el script de "Controlador del personaje" para que al pulsar el botón derecho del ratón, aumente la velocidad del personaje *1.25. He añadido lo siguiente, pero no sé si está bien. Aunque no me da error de compilación, al probar en el juego no noto gran diferencia entre pulsar el botón izquierdo o derecho. Quizás es porque debo aumentar también la velocidad de la animación "Run"??¿cómo se hace? desde el componente Animator en el código?
 
Os dejo el Script aquí por si alguien puede echar un vistazo. Gracias
 

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class ControladorPersonaje : MonoBehaviour
{
    Rigidbody2D rigi;
    public float fuerzaSalto=100f;
    private bool enSuelo=true;
    public Transform comprobadorSuelo;
    float comprobadorRadio=0.07f;
    public LayerMask mascaraSuelo;
    private bool dobleSalto=false;
    private Animator animator;
    private bool corriendo=false;
    public float velocidad=1f;
    private AudioSource sonido;
 
        // Start is called before the first frame update
    void Start()
    {
    }
    void Awake()
    {
        rigi=GetComponent<Rigidbody2D>();
        animator=GetComponent<Animator>();
        sonido = GetComponent<AudioSource>();
    }
    void FixedUpdate()
    {
        //Si está parado
        if (corriendo){
            //Aplicar velocidad en el eje X
            rigi.velocity= new Vector2(velocidad,rigi.velocity.y);
            animator.SetFloat("velX",rigi.velocity.x);
        }
        //Comprobamos si comprobadorSuelo+Radio tocan con los objetos 
        //que pertenezcan a mascaraSuelo
        enSuelo=Physics2D.OverlapCircle(comprobadorSuelo.position,comprobadorRadio,mascaraSuelo);
        
        animator.SetBool("isGrounded",enSuelo);
        if (enSuelo){
            dobleSalto=false;
        }
    }
    // Update is called once per frame
    void Update()
    {
        if (Input.GetMouseButtonDown(0)){
            if(corriendo){
                if ((enSuelo || !dobleSalto)){
                    sonido.Play();
                    //Empujón hacia arriba
                    //Opción 1. Metodo up de Vector2
                    rigi.AddForce(Vector2.up*fuerzaSalto);
                    //Otra opción
                    //Aplicamos una fuerza de 0 en X y de fuerzasalto en Y
                    //rigi.AddForce(new Vector2(0,fuerzaSalto));
                    if(!dobleSalto && !enSuelo){
                        dobleSalto=true;
                    }
                }
            }
            else{
                corriendo=true;
                NotificationCenter.DefaultCenter().PostNotification(this, "PersonajeEmpiezaACorrer");
            }
        }
        if (Input.GetMouseButtonDown(1)){
            
            if (corriendo){
             
            }
            else{
                rigi.velocity = new Vector2(velocidad * 1.25f, rigi.velocity.y);
            }
            
        }
        
    }

 
 
 
ControladorPersonaje.cs
#2
Presentaciones / Hola gente!
Agosto 24, 2019, 08:51:32 PM
Hola a toda la comunidad! espero poder ayudar y enriquecerme de conocimientos. Un saludo