Двойной прыжок и прыжок в зависимости от долготы зажатия кнопки
Я пытаюсь создать игру с двойным прыжком + прыжок от времени нажатия кнопки. Двойной прыжок должен сработать, когда персонаж входит в триггер другого игрового объекта. Как в игре "Geometry Dash". У меня с этим возникли трудности, сам двойной прыжок не работает.
Вот код другого игрового объекта:
public class CubeController : MyCharacterController
{
// Start is called before the first frame update
void OnTriggerEnter2D(Collider2D other)
{
if (other.tag == "Player")
{
ExtraJump++;
}
}
}
Вот код прыжка:
int extraJump = 0;
int defaultExtraJump = 1;
protected int ExtraJump { get => extraJump; set => extraJump = value; }
float littleJumpForce = 20;
float jumpForce = 60;
float maxJumpTime=0.1f;
float defaultMaxJumpTime = 0.1f;
public void CheckGround()
{
isGround = Physics2D.OverlapCircle(groundCheck.transform.position, groundRadius, whatIsGround);
}
void Start()
{
maxJumpTime = defaultMaxJumpTime;
extraJump = defaultExtraJump;
}
private void FixedUpdate()
{
Jump();
CheckGround();
}
public void Jump()
{
if (isGround)
{
maxJumpTime = defaultMaxJumpTime;
extraJump = defaultExtraJump;
}
if (extraJump > 0)
{
if (isGround && Input.GetKeyDown(KeyCode.UpArrow))
{
rb.AddForce(new Vector2(0, littleJumpForce), ForceMode2D.Impulse);
maxJumpTime = defaultMaxJumpTime;
}
if (Input.GetKey(KeyCode.UpArrow) && maxJumpTime >= 0)
{
maxJumpTime -= Time.deltaTime * 4;
rb.AddForce(new Vector2(0, jumpForce), ForceMode2D.Impulse);
}
if (Input.GetKeyUp(KeyCode.UpArrow) && !isGround)
{
maxJumpTime = -1;
extraJump--;
}
}else if (extraJump == 0 && !isGround)
{
if (Input.GetKeyDown(KeyCode.UpArrow))
{
rb.AddForce(new Vector2(0, littleJumpForce), ForceMode2D.Impulse);
maxJumpTime = defaultMaxJumpTime;
}
if (Input.GetKey(KeyCode.UpArrow) && maxJumpTime >= 0)
{
maxJumpTime -= Time.deltaTime* 4;
rb.AddForce(new Vector2(0, jumpForce), ForceMode2D.Impulse);
}
if (Input.GetKeyUp(KeyCode.UpArrow) && !isGround)
{
maxJumpTime = -1;
extraJump--;
}
}
animator.SetBool("isGround", false);
}
У меня очень мало опыта в Юнити((( Помогите кто-то пожалуйста.