using System.Collections; using System.Collections.Generic; using UnityEngine; // Enemy_1 extends the Enemy class public class Enemy_1 : Enemy { [Header("Set in Inspector: Enemy_1")] // # seconds for a full sine wave public float waveFrequency = 2; // sine wave width in meters public float waveWidth = 4; public float waveRotY = 45; private float x0; // The initial x value of pos private float birthTime; // Start works well because it's not used by the Enemy superclass void Start() { // Set x0 to the initial x position of Enemy_1 x0 = pos.x; birthTime = Time.time; } // Override the Move function on Enemy public override void Move() { // Because pos is a property, you can't directly set pos.x // so get the pos as an editable Vector3 Vector3 tempPos = pos; // theta adjusts based on time float age = Time.time - birthTime; float theta = Mathf.PI * 2 * age / waveFrequency; float sin = Mathf.Sin(theta); tempPos.x = x0 + waveWidth * sin; pos = tempPos; // rotate a bit about y Vector3 rot = new Vector3(0, sin*waveRotY, 0); this.transform.rotation = Quaternion.Euler(rot); // base.Move() still handles the movement down in y base.Move(); // print(bndCheck.isOnScreen); } }