private void Move(Vector3 newPos) { var previousPosition = this.transform.position; if (newPos.x > maxX) { newPos = new Vector3(minX, newPos.y, newPos.z); } else if (newPos.x < minX) { newPos = new Vector3(maxX, newPos.y, newPos.z); } else if (newPos.z > maxZ) { newPos = new Vector3(newPos.x, newPos.y, minZ); } else if (newPos.z < minZ) { newPos = new Vector3(newPos.x, newPos.y, maxZ); } this.transform.position = newPos; if (_next != null) { _next.Move(previousPosition); } else if (shouldSpawn) { shouldSpawn = false; //Soy el ultimo nodo y me toca spawnear otro nodo en la posición que acabo de abandonar this._next = Instantiate(snakeNodePrefab, previousPosition, Quaternion.identity).GetComponent <SnakeNode>(); } }
private void Move(Vector3 newPosition) { Vector3 prevPosition = this.transform.position; this.transform.position = newPosition; if (this.nextNode != null) { nextNode.Move(prevPosition); } else if (shouldSpawn) { shouldSpawn = false; nextNode = Instantiate(snakePrefab, prevPosition, Quaternion.identity).GetComponent <SnakeNode>(); } }
private void MoveSnake() { for (int i = 0; i < _snake.Count; i++) { SnakeNode node = _snake[i]; node.Move(); } List <int> tempIndexs = new List <int>(); for (int i = 0; i < _indexs.Count; i++) { int index = _indexs[i]; if (index > 0 && index < _snake.Count) { _snake[index].moveDir = _snake[index - 1].moveDir; _indexs[i]++; } if (_indexs[i] < _snake.Count) { tempIndexs.Add(_indexs[i]); } } _indexs = tempIndexs; }