Input.GetKeyDown 命令在 Unity2D 中无法正常工作
Input.GetKeyDown command doesn't work properly in Unity2D
我对编程和游戏开发还很陌生,所以请耐心等待。我一直在尝试制作一个脚本,根据玩家在 Unity2D 中面向的方向向左或向右添加力。
我会让脚本根据他最后按下的按钮 (A/D) 检测他面向的方向。为此,我制作了两个布尔值(IsFacingRight
和 IsFacingLeft
),如果玩家按下“A”或“D”,它们会相应地改变。
IsFacingRight 默认情况下开始为 true,Left 开始为 false。如果我按下“S”按钮,力就会以正确的方向施加。我的问题是当我按下“S”按钮时没有任何反应。我决定将两个布尔值都设为 public 以随时查看它们的状态,我注意到当我按下“S”按钮时,两个布尔值都变为真。我的猜测是力是左右施加的,因此力相互抵消。这是代码:
{
public bool IsFacingR = true;
public bool IsFacingL = false;
public Rigidbody2D RB;
private float thrust = 20f;
void Update()
{
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.GetKeyDown(KeyCode.S))
{
Slider();
}
}
void Slider()
{
if (IsFacingR = true)
{
RB.AddForce(Vector2.right * thrust);
}
if (IsFacingL = true)
{
RB.AddForce(-Vector2.right * thrust);
}
}
}
您有错字:
if (IsFacingR = true)
{
RB.AddForce(Vector2.right * thrust);
}
if (IsFacingL = true)
{
RB.AddForce(-Vector2.right * thrust);
}
你不是在“询问”IsfacingR 是否为真你是将 IsFacingR 设置为真,我什至不知道它是如何编译的(可能因为它是布尔值)
c# 的 =
不是比较器,它设置了一个用于比较 2 个事物的变量,请使用 ==
我希望这能解决您的问题,但除此之外请不要每天问同样的问题。问候。
我对编程和游戏开发还很陌生,所以请耐心等待。我一直在尝试制作一个脚本,根据玩家在 Unity2D 中面向的方向向左或向右添加力。
我会让脚本根据他最后按下的按钮 (A/D) 检测他面向的方向。为此,我制作了两个布尔值(IsFacingRight
和 IsFacingLeft
),如果玩家按下“A”或“D”,它们会相应地改变。
IsFacingRight 默认情况下开始为 true,Left 开始为 false。如果我按下“S”按钮,力就会以正确的方向施加。我的问题是当我按下“S”按钮时没有任何反应。我决定将两个布尔值都设为 public 以随时查看它们的状态,我注意到当我按下“S”按钮时,两个布尔值都变为真。我的猜测是力是左右施加的,因此力相互抵消。这是代码:
{
public bool IsFacingR = true;
public bool IsFacingL = false;
public Rigidbody2D RB;
private float thrust = 20f;
void Update()
{
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.GetKeyDown(KeyCode.S))
{
Slider();
}
}
void Slider()
{
if (IsFacingR = true)
{
RB.AddForce(Vector2.right * thrust);
}
if (IsFacingL = true)
{
RB.AddForce(-Vector2.right * thrust);
}
}
}
您有错字:
if (IsFacingR = true)
{
RB.AddForce(Vector2.right * thrust);
}
if (IsFacingL = true)
{
RB.AddForce(-Vector2.right * thrust);
}
你不是在“询问”IsfacingR 是否为真你是将 IsFacingR 设置为真,我什至不知道它是如何编译的(可能因为它是布尔值)
c# 的 =
不是比较器,它设置了一个用于比较 2 个事物的变量,请使用 ==
我希望这能解决您的问题,但除此之外请不要每天问同样的问题。问候。