C# 为什么这个触发器不能正常工作

C# 为什么这个触发器不能正常工作,c#,unity3d,C#,Unity3d,我一直在尝试在Unity C#中制作一扇门,我让它在大多数情况下都能工作,但似乎不起作用的是,当玩家站着不动时,让他通过触发器。当我在触发器中移动时,门会工作,但当我站着不动时,它不会工作,而且当按下开门按钮时,传送玩家似乎是即时的,我知道如何修复 using System.Collections; using System.Collections.Generic; using UnityEngine; public class BaseDoorScript : MonoBehaviour {

我一直在尝试在Unity C#中制作一扇门,我让它在大多数情况下都能工作,但似乎不起作用的是,当玩家站着不动时,让他通过触发器。当我在触发器中移动时,门会工作,但当我站着不动时,它不会工作,而且当按下开门按钮时,传送玩家似乎是即时的,我知道如何修复

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class BaseDoorScript : MonoBehaviour {

public float NeededKeyNumber;
public float TpDelay;

public bool CanOpen;
public bool NeedsKey;
public bool Playerisatdoor;

//Door in the hallway
public GameObject Entrancedoor;
public bool isbossdoor;
public bool playerisentering;
//Door in the bossroom
public GameObject ExitBossdoor;


public GameObject SpawnBossRoom;
public void OnTriggerStay2D(Collider2D collision)
{
    if (collision.gameObject.tag == "Player")
    {
        Playerisatdoor = true;
        Debug.Log("Player Is Here");
        //collision.transform.position = ExitBossdoor.transform.position;
        if (CanOpen == true && Playerisatdoor == true)
        {
            var PlayerKey = collision.GetComponent<KeyScript>().KeyNumber;
            if (NeedsKey == true)
            {
                //if (Input.GetButton("EnterDoor"))
                //{
                    if (PlayerKey == NeededKeyNumber)
                    {

                        if (isbossdoor == false)
                        {
                            collision.transform.position = ExitBossdoor.transform.position;
                            SpawnBossRoom.SetActive(true);
                        }
                        if (isbossdoor == true)
                        {
                            collision.transform.position = Entrancedoor.transform.position;
                            SpawnBossRoom.SetActive(false);
                        }
                    }
                //}
            }
            if (NeedsKey == false)
            {
                if ( playerisentering == true
                    //Input.GetButton("EnterDoor") || Input.GetKey(KeyCode.Q)
                    )
                {
                    Debug.Log("ButtonPressed");
                    if (isbossdoor == false)
                    {
                        collision.transform.position = ExitBossdoor.transform.position;
                        SpawnBossRoom.SetActive(true);
                    }
                    if (isbossdoor == true)
                    {
                        collision.transform.position = Entrancedoor.transform.position;
                        SpawnBossRoom.SetActive(false);
                    }
                }
            }
        }
    }
}
private void OnTriggerExit2D(Collider2D collision)
{
    if(collision.gameObject.tag == "Player")
    {
        Playerisatdoor = false;
    }
}
private void Update()
{
    if(Playerisatdoor == true)
    {
        if(Input.GetButton("EnterDoor") || Input.GetKey(KeyCode.Q))
        {
            StartCoroutine("TeleportPlayer");
        }
        else
        {
            playerisentering = false;
        }
    }
}
public IEnumerator TeleportPlayer ()
{
    yield return new WaitForSeconds(TpDelay);
    playerisentering = true;
    yield return new WaitForSeconds(1);
}
}
使用系统集合;
使用System.Collections.Generic;
使用UnityEngine;
公共类BaseDoorScript:MonoBehavior{
公共浮动所需的密钥号;
公共交通延误;
公共图书馆;
公共福利需要;
公共广播娱乐卫星门;
//走廊的门
公共游戏对象入口门;
公共厕所;
公共娱乐场所;
//老板室的门
公共游戏对象退出后门;
公共游戏对象;
公共空间OnTiggerStay2D(碰撞R2D碰撞)
{
如果(collision.gameObject.tag==“Player”)
{
PlayerSatDoor=true;
Log(“玩家在这里”);
//collision.transform.position=ExitBossdoor.transform.position;
如果(CanOpen==true&&PlayerSatDoor==true)
{
var PlayerKey=collision.GetComponent().KeyNumber;
if(NeedsKey==true)
{
//if(Input.GetButton(“EnterDoor”))
//{
如果(PlayerKey==NeededKeyNumber)
{
如果(isbossdoor==false)
{
collision.transform.position=ExitBossdoor.transform.position;
spawnbosroom.SetActive(true);
}
如果(isbossdoor==true)
{
collision.transform.position=入口门.transform.position;
spawnbosroom.SetActive(false);
}
}
//}
}
if(NeedsKey==false)
{
如果(playerSentering==真
//Input.GetButton(“EnterDoor”)| Input.GetKey(KeyCode.Q)
)
{
Debug.Log(“按钮按下”);
如果(isbossdoor==false)
{
collision.transform.position=ExitBossdoor.transform.position;
spawnbosroom.SetActive(true);
}
如果(isbossdoor==true)
{
collision.transform.position=入口门.transform.position;
spawnbosroom.SetActive(false);
}
}
}
}
}
}
私有无效OnTriggerExit2D(已碰撞R2D碰撞)
{
如果(collision.gameObject.tag==“Player”)
{
PlayerSatDoor=假;
}
}
私有void更新()
{
如果(playerSatDoor==真)
{
if(Input.GetButton(“EnterDoor”)| Input.GetKey(KeyCode.Q))
{
Start例程(“远程传送播放器”);
}
其他的
{
PlayerSentering=错误;
}
}
}
公共IEnumerator传送播放器()
{
产生返回新的WaitForSeconds(TpDelay);
PlayerSentering=真;
返回新的WaitForSeconds(1);
}
}

Woops忘了提到我在不久前解决了这个问题,我想我只需要输入我用来帮助任何有类似问题的人的脚本

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class BaseDoorScript : MonoBehaviour {

public float NeededKeyNumber;
public float TpDelay;

public bool CanOpen;
public bool NeedsKey;
public bool Playerisatdoor;

//Door in the hallway
public GameObject Entrancedoor;
public bool isbossdoor;
public bool playerisentering;
//Door in the bossroom
public GameObject ExitBossdoor;


public GameObject SpawnBossRoom;
public void OnTriggerStay2D(Collider2D collision)
{
    if (collision.gameObject.tag == "Player")
    {
        Playerisatdoor = true;
        Debug.Log("Player Is Here");
        //collision.transform.position = ExitBossdoor.transform.position;
        if (CanOpen == true && Playerisatdoor == true)
        {
            var PlayerKey = collision.GetComponent<KeyScript>().KeyNumber;
            if (NeedsKey == true)
            {
                //if (Input.GetButton("EnterDoor"))
                //{
                    if (PlayerKey == NeededKeyNumber)
                    {

                        if (isbossdoor == false)
                        {
                            collision.transform.position = ExitBossdoor.transform.position;
                            SpawnBossRoom.SetActive(true);
                        }
                        if (isbossdoor == true)
                        {
                            collision.transform.position = Entrancedoor.transform.position;
                            SpawnBossRoom.SetActive(false);
                        }
                    }
                //}
            }
            if (NeedsKey == false)
            {
                if ( playerisentering == true
                    //Input.GetButton("EnterDoor") || Input.GetKey(KeyCode.Q)
                    )
                {
                    Debug.Log("ButtonPressed");
                    if (isbossdoor == false)
                    {
                        collision.transform.position = ExitBossdoor.transform.position;
                        SpawnBossRoom.SetActive(true);
                    }
                    if (isbossdoor == true)
                    {
                        collision.transform.position = Entrancedoor.transform.position;
                        SpawnBossRoom.SetActive(false);
                    }
                }
            }
        }
    }
}
private void OnTriggerExit2D(Collider2D collision)
{
    if(collision.gameObject.tag == "Player")
    {
        Playerisatdoor = false;
    }
}
private void Update()
{
    if(Playerisatdoor == true)
    {
        if(Input.GetButton("EnterDoor") || Input.GetKey(KeyCode.Q))
        {
            StartCoroutine("TeleportPlayer");
        }
        else
        {
            playerisentering = false;
        }
    }
}
public IEnumerator TeleportPlayer ()
{
    yield return new WaitForSeconds(TpDelay);
    playerisentering = true;
    yield return new WaitForSeconds(1);
}
}




// RoomKey Numbers:
/* 



*/
使用系统集合;
使用System.Collections.Generic;
使用UnityEngine;
公共类BaseDoorScript:MonoBehavior{
公共浮动所需的密钥号;
公共交通延误;
公共图书馆;
公共福利需要;
公共广播娱乐卫星门;
//走廊的门
公共游戏对象入口门;
公共厕所;
公共娱乐场所;
//老板室的门
公共游戏对象退出后门;
公共游戏对象;
公共空间OnTiggerStay2D(碰撞R2D碰撞)
{
如果(collision.gameObject.tag==“Player”)
{
PlayerSatDoor=true;
Log(“玩家在这里”);
//collision.transform.position=ExitBossdoor.transform.position;
如果(CanOpen==true&&PlayerSatDoor==true)
{
var PlayerKey=collision.GetComponent().KeyNumber;
if(NeedsKey==true)
{
//if(Input.GetButton(“EnterDoor”))
//{
如果(PlayerKey==NeededKeyNumber)
{
如果(isbossdoor==false)
{
collision.transform.position=ExitBossdoor.transform.position;
spawnbosroom.SetActive(true);
}
如果(isbossdoor==true)
{
collision.transform.position=入口门.transform.position;
spawnbosroom.SetActive(false);
}
}
//}
}
if(NeedsKey==false)
{
如果(playerSentering==真
//Input.GetButton(“EnterDoor”)| Input.GetKey(KeyCode.Q)
)
{
Debug.Log(“按钮按下”);
如果(isbossdoor==false)
{
collision.transform.position=ExitBossdoor.transform.position;
spawnbosroom.SetActive(true);
}
如果(isbossdoor==true)
{
collision.transform.position=入口门.transform.position;
spawnbosroom.SetActive(false);
}
}
}
}
}
}
私有无效OnTriggerExit2D(已碰撞R2D碰撞)
{
if(collision.gameObjec