C3#, Unity -输入.OnCollisionEnter中的GetKeyDown不起作用 &g



这是我在播放器上的3D代码。Debug.Log()不打印到控制台,也不输出任何其他内容。

void OnCollisionEnter(Collision collision)
{
if(collision.gameObject.tag = "Enemy" && Input.GetKeyDown(KeyCode.Space))
{
Debug.Log("Working");
}
}

非常简单的代码,我不知道哪里出了问题。

当我去掉"&&Input.GetKeyDown (KeyCode.Space)";效果很好。是的,我正在与另一个标记为"敌人"的游戏对象碰撞,并且我的玩家附加了刚体。它们对itrigger没有阳性反应。我甚至尝试过Input.GetKeyDown("space")而不是KeyCode。

你不太可能在检测到碰撞的同一帧内按下键!

宁愿做某事

private GameObject currentEnemy;
private void OnCollisionEnter(Collision collision)
{
if(collision.gameObject.CompareTag("Enemy"))
{
currentEnemy = collision.gameObject;
}
}
private void OnCollisionExit(Collision collision)
{
if(collision.gameObject.CompareTag("Enemy") && collision.gameObject == currentEnemy)
{
currentEnemy = null;
}
}
private void Update()
{
if(currentEnemy && Input.GetKeyDown(KeyCode.Space))
{
Debug.Log($"Working, interacting with {currentEnemy}");
}
}

最新更新