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