我正在制作我的第一个Unity平台游戏,但我发现我的玩家可以一直跳跃。我尝试使用一个布尔值来解决问题,该值通过跳跃和与地面碰撞来切换状态。但问题在于,即使我的玩家确实与地面碰撞,OnTriggerEnter2D似乎也无法检测到它。
而且,我已经三次确认了地面的标签是正确的。
我尝试使用一个光线投射的解决方案,但那也似乎无法解决问题。我在代码中打印出每个对象碰撞时的标签,所以我知道它根本没有检测到地面。
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
}
}
}