Я пытаюсь создать платформерную игру для 2-х стороннего скроллера, у меня есть проблема, из-за которой сила прыжка моего персонажа не стабильна. Иногда персонаж прыгает так, как я ожидал, но я думаю, что на основании моих наблюдений есть случай, когда сила прыжка моего персонажа становится все ниже и выше. Кто-нибудь может мне помочь и объяснить душу? спасибо!
public bool isgrounded;
public float groundradius;
public Transform checkslot;
public LayerMask LM;
public float jumpower;
void FixedUpdate()
{
if (isgrounded && Input.GetKeyDown(KeyCode.UpArrow) && myrb.velocity.y <= 0.0f)
{
isgrounded = false;
jumping = true;
myanim.SetBool("groundedanim", isgrounded);
myrb.AddForce(new Vector2(0, jumpower), ForceMode2D.Impulse);
}
isgrounded = Physics2D.OverlapCircle(checkslot.position, groundradius, LM);
myanim.SetBool("groundedanim", isgrounded);
myanim.SetFloat("verticalspeed", myrb.velocity.y);
хорошо, я добавил эту дополнительную информацию, так влияет ли эта Dash
функция, которую я включил в FixedUpdate
, на мою физику прыжков? если так, как я могу исправить эту проблему с прыжками, которая у меня есть в настоящее время? ти.
public float dashspeed;
float dashtime;
public float startdash;
int direction;
public bool isleft;
public bool isRight;
public bool isClickDash;
void Start () {
dashtime = startdash;
}
void FixedUpdate ()
{
Dash();
}
public void Dash()
{
if (direction == 0)
{
if (isleft)
{
direction = 1;
}
else if (isRight)
{
direction = 2;
}
}
else
{
if (dashtime <= 0)
{
direction = 0;
dashtime = startdash;
myrb.velocity = Vector2.zero;
if (dashtime == startdash)
{
isClickDash = false;
myanim.SetInteger("TriggerDash", 0);
}
}
else
{
dashtime -= Time.deltaTime;
if (direction == 1)
{
if (isClickDash)
{
DashNow();
}
}
else if (direction == 2)
{
if (isClickDash)
{
DashNow();
}
}
}
}
}
public void DashNow()
{
isClickDash = true;
myanim.SetInteger("TriggerDash", 1);
if (isRight)
{
myrb.velocity = Vector2.right * dashspeed;
}
else if (isleft)
{
myrb.velocity = Vector2.left * dashspeed;
}
}