Прыжок в Unity3D

412
11 декабря 2017, 13:05

Я хочу сделать прыжок в Unity3D, но движение у меня реализовано через CharacterController. Когда я добавляю Rigidbody к игроку, то игрока начинает колбасить. Как можно сделать прыжок без Rigidbody, или сделать так, чтобы CharacterController и Rigidbody ладили между собой, и чтобы при этом работал прыжок?

Answer 1

Вот пример сразу из документации. Используя метод Move и соответствующую подготовку к ней. Rigidbody не нужен.

using UnityEngine;
using System.Collections;
public class ExampleClass : MonoBehaviour {
    public float speed = 6.0F;
    public float jumpSpeed = 8.0F;
    public float gravity = 20.0F;
    private Vector3 moveDirection = Vector3.zero;
    void Update() {
        CharacterController controller = GetComponent<CharacterController>();
        if (controller.isGrounded) {
            moveDirection = new Vector3(Input.GetAxis("Horizontal"), 0, Input.GetAxis("Vertical"));
            moveDirection = transform.TransformDirection(moveDirection);
            moveDirection *= speed;
            if (Input.GetButton("Jump"))
                moveDirection.y = jumpSpeed;                
        }
        moveDirection.y -= gravity * Time.deltaTime;
        controller.Move(moveDirection * Time.deltaTime);
    }
}

Только не желательно в методе Update вызывать GetComponent ибо лучше закэшировать и обращаться к методу закэшированного компонента

READ ALSO
Распарсить json и получить результат

Распарсить json и получить результат

Здравствуйте, делаю get запрос

325
Как сделать поле ввода на Unity 4.1.2?[C#]

Как сделать поле ввода на Unity 4.1.2?[C#]

Есть вариант с созданием префаба в котором лежит GUIText со скриптом, но тут свои трудности

220
Приём платежей от пользователей

Приём платежей от пользователей

Всем приветВозможнго, это вопрос не по шарпам, но так как пишу приложение на #, оставлю это здесь

224