В основном, когда игрок сталкивается с препятствием, идущим вверх, игра генерирует полосу, это нормально, проблема в том, что если он ударил препятствие 3 раза, переместится в сторону и подпрыгнет, не задев препятствие, игрок будет прыгать 4 полосы вместо 1 ...
Я пытался уничтожить следующую полосу движения, когда игрок натолкнулся на препятствие и попытался отменить движение, но его чувствовал сбой или ошибку в игре.
internal void SpawnNewStrip()
{
int stripsPrefabCount = poolOfStripsPrefabs.Length;
int randomNumber = Random.Range (0, stripsPrefabCount);
GameObject item = poolOfStripsPrefabs [randomNumber] as GameObject;
Transform itemChildTransform = item.transform.GetChild(0) as Transform;
Transform itemChildOfChildTranform = itemChildTransform.GetChild (0) as Transform;
float itemWidth = itemChildOfChildTranform.gameObject.GetComponent<Renderer> ().bounds.size.x;
GameObject lastStrip = strips [strips.Count - 1] as GameObject;
GameObject newStrip = Instantiate (item, lastStrip.transform.position, lastStrip.transform.rotation) as GameObject;
newStrip.transform.position = new Vector3 (newStrip.transform.position.x - itemWidth, newStrip.transform.position.y, newStrip.transform.position.z);
strips.Add (newStrip);
}
internal void JumpUp()
{
if(gameIsPlaying == false)
return;
stripsCurrentIndex += 1;
if (stripsCurrentIndex > indexOfTheHighestRoadStrip)
{
Score += 1;
scoreText.text = "Score: " + Score.ToString();
indexOfTheHighestRoadStrip = stripsCurrentIndex;
Debug.Log("new score: " + indexOfTheHighestRoadStrip.ToString());
}
GameObject nextStrip = strips [stripsCurrentIndex] as GameObject;
JumpTargetLocation = new Vector3 (nextStrip.transform.position.x - jumpOffsetX, transform.position.y, transform.position.z);
midWayPointX = JumpTargetLocation.x + ((this.transform.position.x - JumpTargetLocation.x) / 2);
mesh.transform.localEulerAngles = new Vector3 (0, 180, 0);
SpawnNewStrip();
float distanceX = this.transform.position.x - JumpTargetLocation.x;
BoundaryLeft.transform.position -= new Vector3 (distanceX, 0, 0);
BoundaryRight.transform.position -= new Vector3 (distanceX, 0, 0);
}
internal void JumpDown()
{
if(gameIsPlaying == false)
return;
stripsCurrentIndex -= 1;
if (stripsCurrentIndex < 0)
{
stripsCurrentIndex = 0;
return;
}
GameObject previousStrip = strips [stripsCurrentIndex] as GameObject;
JumpTargetLocation = new Vector3 (previousStrip.transform.position.x - jumpOffsetX, transform.position.y, transform.position.z);
midWayPointX = JumpTargetLocation.x - ((JumpTargetLocation.x - this.transform.position.x) / 2);
mesh.transform.localEulerAngles = new Vector3 (0, 0, 0);
float distanceX = JumpTargetLocation.x - this.transform.position.x;
BoundaryLeft.transform.position += new Vector3 (distanceX, 0, 0);
BoundaryRight.transform.position += new Vector3 (distanceX, 0, 0);
}
Просто хотите, чтобы игрок прыгал нормально после столкновения с препятствием.