C# 我怎样才能检测到“;“碰撞”;当我的玩家在另一个物体内时?

C# 我怎样才能检测到“;“碰撞”;当我的玩家在另一个物体内时?,c#,unity3d,C#,Unity3d,玩家跳到第二张牌。就像马里奥一样。然后他按j键加载另一个场景或其他什么 所以我把一个看不见的物体放在2块瓷砖的上面,所以如果他在那个看不见的物体里面,他可以按j 问题是,只有当我在碰撞时向右按j时,j才起作用。当我在里面的时候,我需要它工作 void OnTriggerStay2D(Collider2D colisor) { if (Input.GetKeyDown("j") && (colide)) { SceneManager.LoadSc

玩家跳到第二张牌。就像马里奥一样。然后他按j键加载另一个场景或其他什么

所以我把一个看不见的物体放在2块瓷砖的上面,所以如果他在那个看不见的物体里面,他可以按j

问题是,只有当我在碰撞时向右按j时,j才起作用。当我在里面的时候,我需要它工作

void OnTriggerStay2D(Collider2D colisor)
{

    if (Input.GetKeyDown("j") && (colide))

    {
        SceneManager.LoadScene(Cena3);
        Debug.Log("he's in the last scene");
    }
}

void OnTriggerEnter2D(Collider2D colisor)
{
    colide = true;
    Debug.Log("inside");
}

void OnTriggerExit2D(Collider2D colisor)
{
    colide = false;
    Debug.Log("Outside");
}

您是否可以使用
ontriggereinter2d
OnTriggerExit2D
来设置/取消设置标志,然后根据该标志将此逻辑移动到
Update
…您所说的标志是什么意思?只是一些布尔字段,没有什么特别的,例如
bool IsInside
,然后,您可以检查更新方法中的布尔字段……除了将代码从
OnTriggerStay2D
移动到
update
方法主体之外,您不再需要
OnTriggerStay2D
void Update()
{
    if (Input.GetKeyDown("j") && colide)
    {
        SceneManager.LoadScene(Cena3);
        Debug.Log("he's in the last scene");
    }
}

void OnTriggerEnter2D(Collider2D colisor)
{
    colide = true;
    Debug.Log("inside");
}

void OnTriggerExit2D(Collider2D colisor)
{
    colide = false;
    Debug.Log("Outside");
}