¿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 rb
deberí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