Как прыгнуть в 2.5D мир?

Я совершенно новичок в Unity (и разработке игр в целом). Я следовал большому простому уроку Survival Shooter, и у меня есть один вопрос: в этом уроке мы добавляем позицию ограничения Y к символу твердого тела, а также устанавливаем значение сопротивления и значение углового сопротивления на бесконечное. Как мы можем сделать прыжок персонажа, так как эти настройки препятствуют перемещению персонажа к оси Y?

Если кто-то может мне помочь, пожалуйста...

Большое спасибо!

3 ответа

Почему именно вы добавляете ограничение на ось Y? Вы можете удалить его, а затем просто добавить гравитацию, которая заставит вашего игрока упасть на землю. После этого просто примените силу, или просто простой перевод, идущий вверх с заданной скоростью, чтобы заставить игрока прыгнуть, а затем подождать, пока гравитация не вернет его вниз.

Это то, что я бы сделал, чтобы прыгать.
PS нужно убрать ограничения по оси Y на векторе

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Spawner : MonoBehaviour
{
    public Vector3 force;
    public Rigidbody rb;


    // Use this for initialization
    void Start()
    {
    }

    // Update is called once per frame
    void Update()
    {
        if (Input.GetKey(KeyCode.Space) && transform.position.y == 0) //Enter your y axix where ground is located or try to learn a little more about raycasting ill just use 0 for an example)
        {
            rb.AddForce(force);//Makes you jump up when you hold the space button down line line 19 will do so that you only can jump when you are on the ground.  

        } if (Input.GetKeyUp(KeyCode.Space))
        {
            rb.AddForce(-force); //When you realase the force gets inverted and you come back to ground 
        }
    }

}

Я бы сделал это вместо того, чтобы редактировать код над этим постом.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Just : MonoBehaviour {

    public Vector3 force;
    public Rigidbody rb;
    bool isGrounded;


    // Update is called once per frame
    void Update()
    {
        if (Input.GetKeyDown(KeyCode.Space) && isGrounded == true) //Rember to got to your "Ground" object and tag it as Ground else this would not work 
        {
            rb.AddForce(force);
        }       
    }
     void OnCollisionEnter(Collision collision)
    {
        if (collision.gameObject.tag == "Ground")
        {
            isGrounded = true;
        }
    }
     void OnCollisionExit(Collision collision)
    {
        isGrounded = false;
    }

}

Вам нужно назначить свой наземный объект тэгом Ground, Вам нужно сделать свой собственный тэг с именем Ground, это не так сложно, если вы щелкнете по своему объекту и в левом верхнем углу инспектора появится тэг, а затем вы просто создадите новый тэг с именем Ground. А также plz rember, чтобы назначить другие значения на вашем объекте игрока.

Другие вопросы по тегам