Здравствуйте. Пытаюсь сделать прыжок для персонаж, на котором висит Character Controller (Без Rigidbody & Capsule Colider). Так вот. Написан скрипт для Character Controller, где описана и физика и ходьба и поворот по оси X (Ось Y повешена на персональную камеру персонажа). Написан скрипт по учебнику "Unity в действии" и работает отлично, но не хватает прыжка. Начал искать как сделать прыжок для CC и наткнулся на это видео: Прыжок CharCont. и решил выделить все части скрипта связанные с прыжком и добавить в свой. Добавил его и сделал только velocityY публичной (чтобы информация была). Когда я запускаю игру с этим скриптом, персонаж также отлично двигается, поворачивается, но при нажатии кнопки "Space" персонаж не хочет прыгать, но в публичной переменной velocityY выводятся цифры, которые зависят от цифр jumpHeight:
Какое бы значение я для jumpHeight не ставил, персонаж никак не прыгнет. Сам скрипт:
Код
using System.Collections; using System.Collections.Generic; using UnityEngine; [RequireComponent(typeof(CharacterController))] [AddComponentMenu("Control Script/FPS Input")] public class WME : MonoBehaviour { private CharacterController _charController; public float speed = 1.45f; public float gravity = -9.8f; public float jumpHeight = 1; public float velocityY;
Естественно не двигается - Вы же его не двигаете, а сам собой он двигаться не будет... ЗЫ: изменение какой то Вашей левой переменной никак не воздействует на персонаж.
Мысли силой. За любые изменения игрового объекта в пространстве в конечном итоге отвечает transform объекта. Твой velocityY - это просто цифра не привязанная ни к чему. Если ты хочешь чтобы персонаж двинулся на значение этой цифры то тебе нужно передать это значение в позицию трансформа объекта.
Я бы забил пока на Character Controller ы - что в них толку если совсем элементарных вещей ты не понимаешь. По простому с физикой то юзай AddForce