【发布时间】:2018-07-24 19:43:04
【问题描述】:
有办法。角色从中点开始。如果HorizontalAxis > 0,它应该向右移动,如果< 0,它应该向左移动。我做过这样的事情-
方式:
public Transform[] PatrolPoints;
public Transform Way;
public int CurrentPoint;
public int NeedPoint;
if (transform.position == PatrolPoints[CurrentPoint].position && CurrentPoint < PatrolPoints.Length-1)
{
//PatrolPoints[CurrentPoint];
NeedPoint = CurrentPoint + 1;
}
else if(transform.position == PatrolPoints[NeedPoint].position && CurrentPoint != PatrolPoints.Length - 1)
{
CurrentPoint++;
}
else if(transform.position == PatrolPoints[PatrolPoints.Length - 1].position)
{
NeedPoint--;
}
if (CurrentPoint != PatrolPoints.Length - 1 && moveAxis > 0)
{
transform.position = Vector3.MoveTowards(transform.position, PatrolPoints[NeedPoint].position, moveAxis * moveRate * Time.deltaTime);
//An error occurs here
}
else if(CurrentPoint > 0 && moveAxis < 0)
{
transform.position = Vector3.MoveTowards(transform.position, PatrolPoints[NeedPoint - 1].position, -moveAxis * moveRate * Time.deltaTime);
}
数组的长度 - 3 个元素。 从中间点到右边,人物一般都是左右走的,但是一到最后一点,就报错了——
数组索引超出范围
期间的错误变量是:
需要点:-1;
当前点:2;
而且从中间到左边,角色根本不走。
【问题讨论】:
-
如果您指定以下内容会很好: 1. 错误发生在哪一行 2. 该行中每个变量的值是多少 3. 数组的长度
-
@Bijan 对不起。更新了问题。
-
出错的那一行不应该是[NeedPoint + 1]吗?
标签: unity3d