// Start is called before the first frame update void Start() { _waypoints = _waveConfig.GetWaypoints(); _enemySpeed = _waveConfig.GetEnemySpeed(); transform.position = _waypoints[_waypointIndex].transform.position; }
/// <summary> /// Moves object along a single bezier curve. /// Curve is calculated frame by frame in function of moveSpeed, /// resulting in object moving faster on straight parts and slower on curves /// </summary> /// <param name="curve">A list of 4 Transform objects, defining a bezier curve. /// Each is one of the lists inside a Path.GetPathCurves() list of lists.</param> private IEnumerator FollowCurveVariableSpeed(List <Transform> curve) { float tParam = 0f; Vector2 newPos; while (tParam < 1) { tParam += Time.deltaTime * waveConfig.GetEnemySpeed(); newPos = Mathf.Pow(1 - tParam, 3) * curve[0].position + 3 * Mathf.Pow(1 - tParam, 2) * tParam * curve[1].position + 3 * (1 - tParam) * Mathf.Pow(tParam, 2) * curve[2].position + Mathf.Pow(tParam, 3) * curve[3].position; newPos = ApplyReverse(newPos); newPos = ApplyOffset(newPos); transform.position = newPos; yield return(new WaitForEndOfFrame()); } }
//private void SpawnEnemyWaves() //{ // // create the stack of points // spawnStack = ListUtils.CreateShuffledStack(spawnPoints); // //InvokeRepeating("SpawnOneEnemy", 0f, 0.25f); // InvokeRepeating(SPAWN_ENEMY_METHOD, spawnDelay, spawnInterval); //} // stack version private void SpawnOneEnemy() { if (spawnStack.Count == 0) { spawnStack = ListUtils.CreateShuffledStack(spawnPoints); } var enemy = Instantiate(enemyPrefab, enemyParent.transform); var sp = spawnStack.Pop(); enemy.transform.position = sp.transform.position; //set the enemy parameters enemy.GetComponent <EnemyBehaviour>().SetMoveSpeed(waveConfig.GetEnemySpeed()); enemy.GetComponent <Enemy>().ScoreValue = waveConfig.GetScoreValue(); enemy.GetComponent <SpriteRenderer>().sprite = waveConfig.GetEnemiesSprite(); PublishEnemySpawnedEvent(); }
private void Move() { if (wayPointIndex < waypoints.Count) { var targetPosition = waypoints[wayPointIndex].transform.position; var movementPerFrame = waveConfig.GetEnemySpeed() * Time.deltaTime; transform.position = Vector2.MoveTowards(transform.position, targetPosition, movementPerFrame); if (transform.position == targetPosition) { wayPointIndex++; } } else { Destroy(gameObject); } }
// Start is called before the first frame update void Start() { speed = waveConfig.GetEnemySpeed(); waypoints = waveConfig.GetWaypoints(); transform.position = waypoints[waypointIndex].position; }