Подтвердить что ты не робот

Unity 2d прыжки script

Есть ли у кого-нибудь хорошие прыжки script для 2d-игр в единстве? Код, который у меня есть, но все же далек от прыжков, похоже, что он летает.

using UnityEngine;
using System.Collections;

public class movingplayer : MonoBehaviour {

public Vector2 speed = new Vector2(10,10);

private Vector2 movement = new Vector2(1,1);

// Use this for initialization
void Start () {

}

// Update is called once per frame
void Update () {
    float inputX = Input.GetAxis ("Horizontal");
    float inputY = Input.GetAxis ("Vertical");

    movement = new Vector2(
        speed.x * inputX,
        speed.y * inputY);

    if (Input.GetKeyDown ("space")){
                         transform.Translate(Vector3.up * 260 * Time.deltaTime, Space.World);
                 } 

}
void FixedUpdate()
{
    // 5 - Move the game object
    rigidbody2D.velocity = movement;
    //rigidbody2D.AddForce(movement);

}
}
4b9b3361

Ответ 1

Обычно для прыгающих людей используйте Rigidbody2D.AddForce с Forcemode.Impulse. Может показаться, что ваш объект нажимается один раз по оси Y, и он автоматически падает из-за силы тяжести.

Пример:

rigidbody2D.AddForce(new Vector2(0, 10), ForceMode2D.Impulse);

Ответ 2

Ответ выше устарел с Unity 5 или новее. Используйте это вместо этого!

GetComponent<Rigidbody2D>().AddForce(new Vector2(0,10), ForceMode2D.Impulse);

Я также хочу добавить, что это делает высоту прыжка супер закрытой и только редактируемой в script, так что это то, что я сделал...

    public float playerSpeed;  //allows us to be able to change speed in Unity
public Vector2 jumpHeight;

// Use this for initialization
void Start () {

}
// Update is called once per frame
void Update ()
{
    transform.Translate(playerSpeed * Time.deltaTime, 0f, 0f);  //makes player run

    if (Input.GetMouseButtonDown(0) || Input.GetKeyDown(KeyCode.Space))  //makes player jump
    {
        GetComponent<Rigidbody2D>().AddForce(jumpHeight, ForceMode2D.Impulse);

Таким образом, вы можете редактировать высоту прыжка в Unity, не возвращаясь к script.

Боковое примечание. Я хотел прокомментировать ответ выше, но я не могу, потому что я здесь новый.:)

Ответ 3

Используйте метод Addforce() для примитива жесткого тела, убедитесь, что жесткое тело прикреплено к объекту, а сила тяжести включена,   что-то вроде этого

gameObj.rigidbody2D.AddForce(Vector3.up * 10 * Time.deltaTime); or 
gameObj.rigidbody2D.AddForce(Vector3.up * 1000); 

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