如何解决Unity2D“ Input.GetKeyDown不再起作用
我是Unity编程和游戏开发的初学者,所以请耐心等待。
我试图在按下按钮时向玩家施加力量。其背后的主要概念是,如果玩家面对左侧或右侧,则应该朝该方向发射。
我一直在尝试使用“ InputGetKeyDown(KeyCode.A / D)”命令,根据我最后按下的按钮(“ A”或“ D”)来检测玩家是向左还是向右。 / p>
我制作了两个私人bool(IsFacingRight和IsFacingLeft)。 IsFacingRight默认情况下为true,Left开始为false,但是如果玩家切换方向,则布尔值将相应更改。当我按下左移键时,发射就会发生,但是也没有注册。
我尝试使用“ Debug.Log”来查看代码是否检测到输入,并且按我的预期没有。当我按“ A”或“ D”或“ LeftShift”时,调试控制台中将不会出现任何内容。因此,现在我确认团结不会检测到输入。
代码要大得多,但是所有可以正常工作的代码都应该在下面列出。我还应该提到,除了上面提到的所有内容之外,代码没有任何错误,并且模拟运行完美。这是代码:
private bool IsFacingR = true;
private bool IsFacingL = false;
public Rigidbody2D RB;
private float thrust = 20f;
void Sliding()
{
if (Input.GetKeyDown(KeyCode.D))
{
Debug.Log("Im R");
IsFacingR = true;
IsFacingL = false;
}
if (Input.GetKeyDown(KeyCode.A))
{
Debug.Log("Im L");
IsFacingR = false;
IsFacingL = true;
}
if (Input.GetButtonDown("Crouch")) ;
{
Slide();
}
}
void Slide()
{
if (IsFacingR = true) ;
{
RB.AddForce(Vector2.right * thrust);
}
if (IsFacingL = true) ;
{
RB.AddForce(-Vector2.right * thrust);
}
}
解决方法
您没有调用Sliding()
方法。
将此方法重命名为Update()
,确保您的类继承了MonoBehaviour,并且该类作为组件在场景中处于活动状态的GameObject上。
您应该将此添加到您的单行为中;
void Update(){
Sliding();
}
您还可以像这样处理isFacingL;
private bool IsFacingL => !IsFacingR;
根据您提供的代码,从未更新IsFacingR
和IsFacingL
的原因是因为从未调用过函数Slide()
和Sliding()
。
如果您的课程从MonoBehaviour
扩展,则可以使用Update()
函数,该函数每帧都被调用。
void Update() {
this.Sliding();
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。