Как сделать контролируемый прыжок пробелом в Unity? Нужно, чтобы чем дольше держишь пробел, тем выше прыгал персонаж. Я вроде так сделал, но высота прыжка постоянно разная, не знаю почему так происходит. Хотелось бы, чтобы это нормально работало.
isGround = Physics2D.OverlapBox(player.position + new Vector3(0, 0.01f, 0), new Vector2(0.065f, 0.01f), 0, LayerGround);
if (isGround && Input.GetKeyDown(KeyCode.Space)) { maxYpos = player.position.y + JumpHeight; isJump = true; }
if (player.position.y > maxYpos || Input.GetKeyUp(KeyCode.Space)) isJump = false;
if (isJump) rb.AddForce(new Vector2(0, JumpPower));
Введите параметр - время во время которого нажатие кнопки прыжок, добавляет силу.(MaxJumpTime) в дальнейшем лучше перевести её в MaxJumpHeight.
[Header("Behavior")]
public float JumpPower = 0.25f;
public float MaxJumpTime = 0.25f;
private float _StoreMaxTime;
private bool jumping = false;
private Rigidbody2D rb;
[Header("Settings")]
public LayerMask mask;
public float CheckExstends;
void Start () {
rb = GetComponent<Rigidbody2D>();
_StoreMaxTime = MaxJumpTime;
}
void Update () {
var isGround = Physics2D.Raycast(transform.position, Vector3.down , 1 * CheckExstends, mask);
if (isGround && Input.GetKeyDown(KeyCode.Space))
{
MaxJumpTime = _StoreMaxTime;
}
if (Input.GetKey(KeyCode.Space) && MaxJumpTime > 0)
{
MaxJumpTime -= Time.deltaTime;
rb.AddForce(new Vector2(0, JumpPower),ForceMode2D.Impulse);
}
if (Input.GetKeyUp(KeyCode.Space) && !isGround)
{
MaxJumpTime = -1;
}
}
private void OnDrawGizmosSelected()
{
Gizmos.DrawLine(transform.position, transform.position + (Vector3.down * CheckExstends));
}
Из редактора, надо
Обновить слой, чтобы соответствовал слою земли.
Выставить значение CheckExstends (Gizmo - бела линия в окне редактора) Это проверка на касание с землей. Линия должна едва выходить за пределы объекта.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Нужно реализовать healthBar двигая дочерний зеленый прямоугольник по отношению к красному родительскому
Хочу узнать, как с помощью рефлексии создать объект класса, у которого явно прописан конструкторПредположим есть класс Student:
Как с помощью этого средства сделать дозапись данных в Json: