En este momento estás viendo ¿Por qué los códigos de salto que escribí no funcionan con Unity3d?

 – Unity

¿Por qué los códigos de salto que escribí no funcionan con Unity3d? – Unity

¿Por qué los códigos de salto que escribí no funcionan con Unity3d?

– UnityAssets3Free

bienvenido , por aqui juansito y para hoy os traigo
nueva pregunta curiosa

Acabo de empezar a programar en C#. Estoy experimentando con Unity3d. Arreglé los errores en mis códigos y no obtengo más errores, pero los códigos que escribí para saltar mi personaje no funcionan y mi personaje no salta. Alguien me puede ayudar ?

using System.Collections.Generic;
using UnityEngine;

public class PlayerController : MonoBehaviour

    CharacterController controller;
    Vector3 velocity;
    Rigidbody rb;
    bool isGrounded;
    public Transform ground;
    public float distance = 0.3f;
    public float speed;
    public float jump;
    public float jumpHeight;
    public float gravity;
    public LayerMask mask;
    
    private void Start()
    
        controller = GetComponent<CharacterController>();

        
    private void Update()
    
        #region Movement
        float horizontal = Input.GetAxis("Horizontal");
        float vertical = Input.GetAxis("Vertical");

        Vector3 move = transform.right * horizontal + transform.forward * vertical;
        controller.Move(move*speed * Time.deltaTime);
        #endregion

        #region Jump
        if (Input.GetKeyDown(KeyCode.Space) && isGrounded)
        
            velocity.y += Mathf.Sqrt(jumpHeight * -3.0f * gravity);
        
        #endregion       

        #region Gravity
        isGrounded = Physics.CheckSphere(ground.position, distance,mask);
        if (isGrounded && velocity.y <0)
        
            velocity.y = 0f;
        
        velocity.y += gravity + Time.deltaTime;
        controller.Move(velocity * Time.deltaTime);
        #endregion
    
~~~

2 respuestas 2

Parece que tienes un error tipográfico. En la línea 47 probablemente debería ser

rb.velocity = Vector3.up*Time.deltaTime*jump;

Hay un punto extra después de deltaTime.

Cuando publique código, hágalo copiándolo y pegándolo como texto, no como capturas de pantalla. Por lo que veo allí, parece que la declaración de rbdebería haber una línea como Rigidbody rb; en la parte superior. También tenga en cuenta que movió el OnTriggerStay método dentro Update, por lo que Unity no lo llamará como probablemente esperaría. muévelo Update para que funcione.

nota: si aun no se resuelve tu pregunta por favor dejar un comentario y pronto lo podremos de nuevo , muchas gracias

eso es todo,hasta la proxima

Deja una respuesta