Прыжок персонажа, 2D платформер

Программирование на Юнити.

Прыжок персонажа, 2D платформер

Сообщение AlexStim 05 янв 2019, 20:34

Я новичок, и пишу первую свою игру на Unity. Пишу под Андроид. Вроде написал скрипт движения, но прыжок работает не так, как мне хочется. Персонаж идет вправо/влево и при нажатии кнопки прыжка он перестает двигаться в сторону и просто прыгает вертикально вверх. А мне нужно, чтобы он как бы прыгнул под углом, т.е. в том направлении, куда шел. Подскажите пожалуйста.
Ниже скрипт прыжка:
Синтаксис:
Используется csharp
rigidbody.AddForce(transform.up * jumpForce, ForceMode2D.Impulse);
AlexStim
UNец
 
Сообщения: 2
Зарегистрирован: 05 янв 2019, 20:26

Re: Прыжок персонажа, 2D платформер

Сообщение DimaJoke 05 янв 2019, 21:52

Вплавишь это в код:
Синтаксис:
Используется csharp
private Rigidbody 2D rb;//сам ригидбоди
public KeyCode JumpKey;//нужная кнопка
public float JumpForce;//скорость
void Start()
{
rb = GetComponent<Rigidbody 2D>();//определяем ригидбоди
}

void Update()
{
if(Input.GetKeyDown(JumpKey))//если нажата кнопка
{
rb.AddForce(transform.up * JumpForce);//лети, птишка
}
}
 

И есть такой сайт, как http://www.docs.unity3d.com а там страница
https://docs.unity3d.com/ScriptReference/Rigidbody2D.AddForce.html, где всё описанно
Что бы повзрослеть, человек должен преодолеть ошибки юности.

Поэтому я снова здесь..
Аватара пользователя
DimaJoke
UNITрон
 
Сообщения: 293
Зарегистрирован: 12 авг 2018, 18:59
Откуда: Ульяновск
  • Сайт

Re: Прыжок персонажа, 2D платформер

Сообщение Cr0c 05 янв 2019, 21:57

Код движения где?
Аватара пользователя
Cr0c
Адепт
 
Сообщения: 3035
Зарегистрирован: 19 июн 2015, 13:50
Skype: cr0c81

Re: Прыжок персонажа, 2D платформер

Сообщение AlexStim 06 янв 2019, 10:35

Вот..
Синтаксис:
Используется csharp
[SerializeField]
    private float speed;
    [SerializeField]
    private float jumpForce;
    private bool isGround;
    Rigidbody2D rigidbody;
    SpriteRenderer sprite;

        void Awake () {
        rigidbody = GetComponent<Rigidbody2D>();
        sprite = GetComponentInChildren<SpriteRenderer>();
        }

    void OnTriggerEnter2D(Collider2D other)
    {
        if (other.gameObject.tag == "Ground")
        {
            isGround = true;
        }
    }

    public void Left()
    {
        rigidbody.velocity = new Vector2(-speed, rigidbody.velocity.y);
        sprite.flipX = true;
    }

    public void Right()
    {
        rigidbody.velocity = new Vector2(speed, rigidbody.velocity.y);
        sprite.flipX = false;
    }

    public void Jump()
    {
        if (isGround)
        {
            isGround = false;
            rigidbody.AddForce(transform.up * jumpForce, ForceMode2D.Impulse);
        }
    }
AlexStim
UNец
 
Сообщения: 2
Зарегистрирован: 05 янв 2019, 20:26

Re: Прыжок персонажа, 2D платформер

Сообщение Cr0c 06 янв 2019, 12:23

В прыжке задавай скорость вместо AddForce
Аватара пользователя
Cr0c
Адепт
 
Сообщения: 3035
Зарегистрирован: 19 июн 2015, 13:50
Skype: cr0c81

Re: Прыжок персонажа, 2D платформер

Сообщение wedmor 15 янв 2019, 09:59

привет если ещё не нашол ответ то я зделал вот так.. это тоже из одного из туториолов.


здесь я спрашиваю если нажат пробел и персонаж на земле
Синтаксис:
Используется csharp
if (Input.GetKeyDown(KeyCode.Space) && _grounded == true)
        {

            _rigid.velocity = new Vector2(_rigid.velocity.x, _jumpForce);
            _grounded = false;
            resetJumpNeeded = true;
            StartCoroutine(ResetJumpNeededRoutine());
            _playerAnim.Jump(true);
        }
 


здесь я обнуляю значение земли
Синтаксис:
Используется csharp
void CheckGrounded()

    {
        RaycastHit2D hitInfo = Physics2D.Raycast(transform.position, Vector2.down, 1f, 1 << 8);
       
        if (hitInfo.collider != null)
        {
           
            if (resetJumpNeeded == false)
            {
                _playerAnim.Jump(false);

                _grounded = true;
            }

               
        }

    }

 



мож поможет))
wedmor
UNец
 
Сообщения: 4
Зарегистрирован: 14 янв 2019, 23:56


Вернуться в Скрипты

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 6