Войти
UnityФорумПрограммирование

Нужна помощь в управлении на юнити

#0
18:38, 26 июня 2020

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


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

public class MoveController : MonoBehaviour
{

    public float speed;
    private float moveInput;

    private Rigidbody2D rb;

    private bool facingRight = true;

    private bool isGrounded;
    public Transform groundCheck;
    public float checkRadius;
    public LayerMask whatIsGround;

    public float jumpForce;
  //  public int extraJumpsValue;
  //  private int extraJumps;

    private float jumpTimeCounture;
    public float jumpTime;
    private bool isJumping;

    private Animator anim;

   
         
    void Start()
    {
        anim = GetComponent<Animator>();
    //  extraJumps = extraJumpsValue;
        rb = GetComponent<Rigidbody2D>();
    }

    void FixedUpdate()
    {

       
        //for move left and right
       
        moveInput = Input.GetAxis("Horizontal");
        rb.velocity = new Vector2(moveInput * speed, rb.velocity.y);

        if (moveInput == 0)
        {
            anim.SetBool("isRunning",false);
        }
        else
        {
            anim.SetBool("isRunning", true);

        }

        //for flip
        if(facingRight == false && moveInput > 0)
        {
            Flip();

        }
        else if(facingRight == true && moveInput <0)
        {
            Flip();
        }
    }

   
   
   
    void Update()
    {
        isGrounded = Physics2D.OverlapCircle(groundCheck.position, checkRadius, whatIsGround);

        if(isGrounded == true && Input.GetButtonDown("Jump"))
        {
            isJumping = true;
            jumpTimeCounture = jumpTime;
            rb.velocity = Vector2.up * jumpForce;
        }

        if (Input.GetButton("Jump") && isJumping == true)
        {
            if (jumpTimeCounture > 0)
            {
                rb.velocity = Vector2.up * jumpForce;
                jumpTimeCounture -= Time.deltaTime;
            } else
            {
                isJumping = false;
            }
           
        }
       
       
        if (Input.GetButtonUp("Jump"))
        {
            isJumping = false;
        }

    }

    void Flip()
    {

        facingRight = !facingRight;
        transform.rotation = Quaternion.Euler(0, facingRight ? 0 : 180, 0);
    }
}

/* if (isGrounded == true)
        {
            extraJumps = extraJumpsValue;
        }

        if (Input.getButtonDown("Jump") && extraJumps > 0)
        {
            rb.velocity = Vector2.up* jumpForce;
            extraJumps--;
        }

        else if(Input.GetButtonDown("jump") && extraJumps == 0 && isGrounded == true)
        {
            rb.velocity = Vector2.up* jumpForce;
        }*/


#1
18:39, 26 июня 2020

P.S. Контроллер для платформера

#2
19:35, 26 июня 2020

RollingStouner
> В коде не шарю

Прикольно, значит тебе и не нужно

> учиться

P.S. народ кто будет отписываться в теме не подсказывайте, может начнет разбираться хоть, почитав немного.

#3
0:20, 27 июня 2020

harbinger
> народ кто будет отписываться в теме не подсказывайте, может
учитывая как сами когда-то говорили —-дай списать а сам не могу.

RollingStouner
> Подскажите как к данному коду добавить двойной прыжок
RollingStouner
> if(isGrounded == true && Input.GetButtonDown("Jump"))
>         {
>             isJumping = true;
>             jumpTimeCounture = jumpTime;
>             rb.velocity = Vector2.up * jumpForce;

примерно тут начинается =если нажали прыжок....
ось икс=вправо экран
ось игрек=вверх экран
если нажали прыжок то У=увеличить У
типа вверх по экрану У это прыжок.

Код
если нажали прыжок тогда У=У+10
если У=У+10 И нажали прыжок тогда У=(У+10)+10
а иначе У=уменьшаем У(тут прыжок не нажат два раза и значит это как обычно одинарный прыжок)

контролировать координаты объекта типа персонажХ, персонажУ
когда нажимаешь прыжок то отслеживается высота персонажа= персонажУ=координата экрана вверх и вниз.ось У.

#4
18:22, 27 июня 2020

Спасибо за ребус, попробую разгадать. Я только учусь и самостоятельно тяжело код написать, так что не плюйте в лицо зря

#5
18:55, 27 июня 2020

RikkСпасибо тебе, ребус разгадан успешно.. Все получилось

#6
19:05, 27 июня 2020

RollingStouner
> RikkСпасибо тебе
ок

#7
11:41, 30 июня 2020

RollingStouner
Начни с языка программирования для начала, а не с unity. Ты пытаешься "собрать ракету" не с базовых вещей, а прямо в лоб, с ходу, сразу ракету.
Вряд ли тебе кто-то поможет сделать двойной прыжок. С одной стороны (чисто технически) это плевое дело, а с другой стороны, что ты сам сделаешь, если прыжка не можешь реализовать?

Я бы посоветовал, вдобавок, читать учебники по разработке игр. Типа "физика для программиста" или "физика для разработчика игр".

UnityФорумПрограммирование