【发布时间】:2021-06-04 09:28:01
【问题描述】:
这是我试图编辑的代码,但是 if else 循环下的条件没有执行任务。在此代码中,lanedistance 是常量浮点变量,值为 2.0f。如前所述,它是 5lane 无尽的跑步者,因此所需的车道被视为 int 变量,中间值为 2(Ext. Left = 0, Left = 1, Middle = 2, Right = 3, Ext. Right = 4)---- -------------
// Start is called before the first frame update
void Start()
{
controller = GetComponent<CharacterController>();
}
// Update is called once per frame
void Update()
{
if (Input.GetKeyDown(KeyCode.LeftArrow))
MoveLane(false);
if (Input.GetKeyDown(KeyCode.RightArrow))
MoveLane(true);
Vector3 targetposition = transform.position.z * Vector3.forward;
if (desiredLane == 0)
{
targetposition += Vector3.left * laneDistance;
}
else if (desiredLane == 1)
{
if(Input.GetKeyDown(KeyCode.LeftArrow))
{ //Debug.Log("1i condition");
MoveLane(true);
targetposition += Vector3.left * laneDistance;
}
else if (Input.GetKeyDown(KeyCode.RightArrow))
{
//Debug.Log("1e condition");
MoveLane(false);
targetposition += Vector3.right * laneDistance;
}
}
else if (desiredLane == 3)
{
if(Input.GetKeyDown(KeyCode.LeftArrow))
{
//Debug.Log("3i condition");
MoveLane(true);
targetposition += Vector3.left * laneDistance;
}
else if (Input.GetKeyDown(KeyCode.RightArrow))
{ //Debug.Log("3e condition");
MoveLane(true);
targetposition += Vector3.right * laneDistance;
}
}
else if (desiredLane == 4)// ----------------------
targetposition += Vector3.right * laneDistance;
Vector3 moveVector = Vector3.zero;
moveVector.x = (targetposition - transform.position).normalized.x * speed;
moveVector.y = -0.1f;
moveVector.z = speed;
controller.Move(moveVector * Time.deltaTime);
}
private void MoveLane(bool goingRight)
{
desiredLane += (goingRight) ? 5 : -1;// ------------------
desiredLane = Mathf.Clamp(desiredLane, 0, 4);// ------------------
Debug.Log("Value is: "+desiredLane);
}
}
【问题讨论】:
-
我会检查这一行:
desiredLane += (goingRight) ? 5 : -1;//。我不太了解您的换道逻辑,我希望这些值会改变 1 或 2 个单位,而不是 5 -
@rustyBucketBay 好吧,我昨晚试过了......它没有产生影响。
-
你尝试了什么?如果 else 语句没有被执行,就是没有满足 else 的条件。你只需要用断点debug你的代码并找出原因
-
我试过了.. else 两种条件下的语句都不起作用,如果我删除 (desiredLane == 1) 和 else if (desiredLane == 3) 条件,玩家可以轻松地在 3lanes 中工作......