Когда бегун касается земли, значение bool не остается верным все время, пока он находится на земле
Я сделал два бегунка-коляски2D для бегуна: от одного до сталкиваются с землей, а другой устанавливается как триггер, чтобы проверить, заземлен ли он
Здесь бегун сталкивается с землей, но значение bool не установлено как истинное
Я сделал то же самое для наземного спрайта
Но когда скорость равна 0, она работает нормально ... и, конечно, тогда она бесполезна
Да, и еще одна вещь, когда префаб на земле продолжает генерировать здесь код геттера бегуна, застрявший в какой-то момент ... и когда он это делает, он помечается, что он заземлен ... любая идея как исправить зависание? PS: я пытался изменить размер поля boxcollider2D, но это не сработало: (((
Вот часть кода, относящаяся к проверке на земле (предполагается, что это хороший звуковой эффект шага) тоже)
private void OnTriggerEnter2D(Collider2D collision)
{
if(collision.tag == "Ground")
{
isGrounded = true;
footSteps.Play();
}
}
private void OnTriggerExit2D(Collider2D collision)
{
if (collision.tag == "Ground")
{
isGrounded = false;
footSteps.Stop();
}
}
Может быть, если я просто покажу вам весь код, вы сможете мне лучше помочь (надеюсь, мой код не такой грязный)
public float speed;
public float jumpForce = 10f;
public float speedMultiplier;
public float speedIncreasedMilestone;
private float speedMilestoneCount;
private Rigidbody2D rb;
private Collider2D myCollider;
public Animator anim;
public AudioSource footSteps;
public bool isGrounded = false;
void Start()
{
rb = GetComponent<Rigidbody2D>();
}
void Update()
{
if(transform.position.x < speedMilestoneCount)
{
speedMilestoneCount += speedIncreasedMilestone;
speedIncreasedMilestone = speedIncreasedMilestone * speedMultiplier;
speed = speed * speedMultiplier;
}
if(isGrounded == true)
{
rb.velocity = new Vector2(-speed * Time.deltaTime, rb.velocity.y);
anim.SetBool("Condition",true);
}
if(Input.GetKeyDown(KeyCode.Space) && isGrounded == true)
{
anim.SetBool("Condition", false);
rb.velocity = new Vector2(rb.velocity.x,jumpForce);
}
}
private void OnTriggerEnter2D(Collider2D collision)
{
if(collision.tag == "Ground")
{
isGrounded = true;
footSteps.Play();
}
}
private void OnTriggerExit2D(Collider2D collision)
{
if (collision.tag == "Ground")
{
isGrounded = false;
footSteps.Stop();
}
}
}