Jump to content
Null

Problemas con el player que no sé corregir

Recommended Posts

Hola,
tengo un pequeño problema cuando el player
choca con una pared.

Es como que empieza a tener convulsiones.
Alguien sabe decir cómo corregir esto?

Miren este gif.

También tengo el problema de que
cuando subo una ladera de una colina o algo
y me quedo quieto, el player se empieza a resbalar.
Gif de ejemplo

Ya sé que esto no está mal, pues es obvio que se va
a resbalar ya que tiene un Rigidbody xd
Pero igualmente se puede corregir, verdad?

 


Aquí dejo el código que estoy usando para el player por si alguien quiere verlo.
Tal vez haya algún error.

using UnityEngine;
using System.Collections;

public class ControladorJugador : MonoBehaviour
{
    private float _velocidadOriginal;
    public float velocidad = 4.0f;
    public float velocidadCorrer;



    void Start()
    {
        Cursor.lockState = CursorLockMode.Locked;

        _velocidadOriginal = velocidad;
        velocidadCorrer = velocidad * 2.0f;
    }

    void Update()
    {
        Caminar();
        Correr();
        Editor();
    }

    void Caminar()
    {
        float movimiento = Input.GetAxis("Vertical") * velocidad;
        float movimientoLateral = Input.GetAxis("Horizontal") * velocidad;

        movimiento *= Time.deltaTime;
        movimientoLateral *= Time.deltaTime;

        transform.Translate(movimientoLateral, 0.0f, movimiento);
    }

    void Correr()
    {
        if (Input.GetKeyDown("left shift"))
        {
            velocidad = velocidadCorrer;
        }
        else if (Input.GetKeyUp("left shift"))
        {
            velocidad = _velocidadOriginal;
        }
    }

    void Editor()
    {
        if (Input.GetKeyDown("escape"))
        {
            Cursor.lockState = CursorLockMode.None;
            Cursor.visible = true;
        }
    }
}



Qué recomiendan?

Edited by pioj
uso de tags y <> para pegar código.

Share this post


Link to post
Share on other sites

No hay nada mal, a simple vista. Es la forma que tiene la física de responder y es cómo responder el collider cuando chocas contra algo.

No es que rebote, es que en tu código no especificas que pare de moverse cuando choque contra algo, por lo que trata de re+posicionar y volver a chocar contra el collider todo el rato.

Share this post


Link to post
Share on other sites
hace 24 minutos, pioj said:

No hay nada mal, a simple vista. Es la forma que tiene la física de responder y es cómo responder el collider cuando chocas contra algo.

No es que rebote, es que en tu código no especificas que pare de moverse cuando choque contra algo, por lo que trata de re+posicionar y volver a chocar contra el collider todo el rato.

Gracias!
Ya lo he solucionado :B

Share this post


Link to post
Share on other sites

para el asunto de que ""resbala" en la cuestas, supongo que es por el mismo rigidbody, la "gravedad" lo jala hacia abajo como se espera que lo haga. Ya trataste de usar un character controller para tu jugador en vez del rigidbody??

Share this post


Link to post
Share on other sites
On 30/5/2016 at 6:57, yugosama said:

para el asunto de que ""resbala" en la cuestas, supongo que es por el mismo rigidbody, la "gravedad" lo jala hacia abajo como se espera que lo haga. Ya trataste de usar un character controller para tu jugador en vez del rigidbody??

Probé a bloquear las rotaciones en X y Z de los Constraints del Rigidbody de mi jugador y me funcionó.
Ya no se resbala en las cuestas.

Aunque el problema que sí sigo teniendo es al bajar una cuesta. Mi player baja dando botes y más si voy corriendo, lol.
Alguna sugerencia?

 


Por cierto, he probado también antes a usar el CharacterController en vez del Rigidbody, pero el player atraviesa las paredes, las montañas y todo.

Share this post


Link to post
Share on other sites
hace 17 horas, juanma_teso said:

Mi sugerencia es que no muevas el player con Transform, usa el Rigidbody.

A qué te refieres?
A que lo mueva con el AddForce?

Share this post


Link to post
Share on other sites

ehhh entonces mueves tu personaje con transform??? oh boy...
al mover objetos con transform literalmente indicas al motor de juego que dicho objeto se "teletransporte" de un punto del escenario a otro, dejando de lado las fisicas, es por eso atraviesas los colisionadores (me imagino que tus props y terrain tienes colisionadores, verdad?) para mover ridigbodies usa addforce y para los characters controllers una .move() o .simpleMove() creo que esos son los metodos, googlea y las dudas se aclararan

Share this post


Link to post
Share on other sites
On 6/6/2016 at 6:53, yugosama said:

ehhh entonces mueves tu personaje con transform??? oh boy...
al mover objetos con transform literalmente indicas al motor de juego que dicho objeto se "teletransporte" de un punto del escenario a otro, dejando de lado las fisicas, es por eso atraviesas los colisionadores (me imagino que tus props y terrain tienes colisionadores, verdad?) para mover ridigbodies usa addforce y para los characters controllers una .move() o .simpleMove() creo que esos son los metodos, googlea y las dudas se aclararan

No te preocupes, ya estoy usando un CharacterController :P

Share this post


Link to post
Share on other sites

UnitySpain © Todos los derechos reservados 2020
×
×
  • Create New...