Я делаю свой первый платформер Unity, и мне пришло в голову, что я никогда не останавливал своего игрока от бесконечных прыжков.Я попробовал типичное решение с использованием логического значения, которое переключается при прыжке и столкновении с землей.Проблема в том, что мой плеер сталкивается с землей. OnTriggerEnter2D, похоже, не обнаруживает его.
И да, я трижды проверил, что на земле есть правильный тег.
Я пытался использоватьрешение Raycaster, но это тоже не сработало.У меня есть код, распечатывающий тег любого объекта, с которым он сталкивается, поэтому я знаю, что он вообще не обнаруживает землю.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerController : MonoBehaviour
{
//movement variables
public float movex;
public float speed;
public float jumpforce;
//interactivity variables
public Rigidbody2D rb2d;
private bool isJumping;
Vector3 startingPosition;
// Use this for initialization
void Start()
{
rb2d = GetComponent<Rigidbody2D>();
startingPosition = transform.position;
}
// Update is called once per frame
void Update()
{
// localScale;
if (Input.GetKeyDown(KeyCode.Space) && !isJumping)
{
rb2d.velocity = new Vector2(rb2d.velocity.x, jumpforce);
isJumping = true;
}
}
void OnTriggerEnter2D(Collider2D col)
{
Debug.Log(col.tag);
if (col.gameObject.CompareTag("Floor"))
{
isJumping = false
}
}
}