问题描述
我对编程和游戏开发非常陌生,因此请耐心等待。我一直在尝试制作一个脚本,该脚本会根据他在Unity2D中所面对的方向向左或向右添加一个力。
我将使脚本根据上次按下的按钮(A / D)来检测他所面对的方向。为此,我制作了两个布尔值(IsFacingRight
和IsFacingLeft
),如果玩家按下“ A”或“ D”,它们会相应地改变。
IsFacingRight默认情况下以true开头,而Left以false开头。如果我按下“ S”按钮,力将沿正确的方向施加。我的问题是,当我按下“ S”按钮时,什么也没有发生。我决定将两个布尔型都公开,以随时查看它们的状态,并且我注意到当我按下“ S”按钮时,两个布尔型都变为true。我的猜测是,力是左右施加的,因此力会互相抵消。这是代码:
{
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);
}
如果Is IsingR为true,则您不是在“询问”,而是将IsFacingR设置为true,我什至不知道它是如何编译的(无论如何,它都会导致bool)
c#的=
不是比较器,它设置了一个变量来比较两件事,请使用==
我希望这可以解决您的问题,但除此之外,请不要每天问同样的问题。问候。