// Update is called once per frame void Update() { //Keep the icon updated ~Adam if(mCurrentIcon != null) { mBossIcon.sprite = mCurrentIcon; } //Find the boss ~Adam if(mBoss == null && FindObjectOfType<BossGenericScript>() != null) { mBoss = FindObjectOfType<BossGenericScript>(); } if(mBoss != null) { //Adjust meters ~Adam mHealthPanel.rectTransform.localScale = new Vector3((mBoss.mCurrentHealth/mBoss.mTotalHealth),1f,1f); mChargePanel.rectTransform.localScale = new Vector3((mBoss.mCurrentCharge/mBoss.mMaxCharge),1f,1f); mOverheatPanel.rectTransform.localScale = new Vector3((mBoss.mCurrentOverheat/mBoss.mMaxOverheat),1f,1f); //Toggle weapon button visibility ~Adam if(mBoss.mChargeReady) { mChargeWeaponButton.SetActive (true); } else { mChargeWeaponButton.SetActive (false); } } }
// Use this for initialization void Start() { //Find the boss ~Adam if(FindObjectOfType<BossGenericScript>() != null) { mBoss = FindObjectOfType<BossGenericScript>(); } }
// Update is called once per frame void Update() { //Find the Boss ~Adam if(mTarget == null || mBoss == null) { if(FindObjectOfType<BossGenericScript>() != null) { mBoss = FindObjectOfType<BossGenericScript>(); mTarget = mBoss.transform; mTargetPoint = mTarget.transform.position +(Vector3.down*20f) + new Vector3(Random.Range (-3,3), Random.Range (-2,2),0); } } if(mTarget != null && Vector3.Distance (transform.position,mTargetPoint) < 2f) { //mHoverTimer -= Time.deltaTime;. if(Mathf.Abs (transform.position.x - mTarget.position.x) < 2f) { mSpeed = Mathf.Lerp (mSpeed, 2f, 0.3f); } else { mSpeed = Mathf.Lerp (mSpeed, mDefaultSpeed, 0.1f); } if(Vector3.Distance (transform.position,mTargetPoint) < 0.5f) { mTargetPoint = mTarget.transform.position +(Vector3.down*20f) + new Vector3(Random.Range (-3,3), Random.Range (-2,2),0); mGoForCenter = false; mStuckTimer = mStuckDefault; } } else { if(mSpeed <= mDefaultSpeed-0.5f) { if(mTarget != null && Vector3.Distance (transform.position,mTargetPoint) < 3f) { mSpeed = Mathf.Lerp (mSpeed, mDefaultSpeed/2f, 0.1f); } else { mSpeed = mDefaultSpeed; } } } if(mDodgeTimer > 0f || mGoForCenter) { mSpeed = mDefaultSpeed; } if(mDodgeStuckTimer > mStuckDefault*-1f) { mDodgeStuckTimer-=Time.deltaTime; } if(!mHasFiredSuper && mHitsRemaining < 5) { mHasFiredSuper = true; mFiringSuper = true; mSuperWeapon.SetActive (true); } if(mFiringSuper && !mSuperWeapon.activeInHierarchy) { mFiringSuper = false; } //Toggle hit effect sparks ~Adam if(mInvincibleTimer >= 0f) { mInvincibleTimer -= Time.deltaTime; mDodgeTimer = 0f; mDodgeStuckTimer = mStuckDefault; mGoForCenter = false; mHitEffect.gameObject.SetActive (true); if(mHitEffect.isStopped) { mHitEffect.Play(); } } else if(mHitEffect.isPlaying) { mHitEffect.gameObject.SetActive (false); mHitEffect.Stop(); } //Check for if it's been stuck in place ~Adam if(mLastPos == transform.position && !mFiringSuper) { mStuckTimer -= Time.deltaTime; if(mStuckTimer <= 0f) { mGoForCenter = true; } } else { mLastPos = transform.position; } //Break out of what it's doing and fly to the center of the boss if stuck ~Adam if(mGoForCenter && mTarget != null) { mTargetPoint = mTarget.transform.position +(Vector3.up*5f); mMoveDir = Vector3.Normalize (mTargetPoint-transform.position); //mTargetPoint = mTarget.transform.position; //Don't try going to the center for too long ~Adam mGoForCenterTimer += Time.deltaTime; if(mGoForCenterTimer >= 3f) { mGoForCenter = false; mGoForCenterTimer = 0f; } } if(!mGoForCenter) { mGoForCenterTimer = 0; } //Try to get under the target point ~Adam if(mDodgeTimer <= 0f) { mMoveDir = Vector3.Normalize (mTargetPoint-transform.position); } //Dodge away ~Adam else { //mMoveDir = Vector3.Normalize (transform.position-mDodgePoint); mMoveDir = mDodgeDir; mDodgeTimer -= Time.deltaTime; } //Shoot ~Adam if(mShootTimer <= 0f) { FireHeroBullet (); mShootTimer = mShootTimerDefault; } //Adjust for speed and don't move on the Z axis ~Adam mMoveDir *= mSpeed * 0.01f; if(mDodgeTimer > 0f) { mMoveDir*=1.5f; } mMoveDir = new Vector3(mMoveDir.x, mMoveDir.y, 0f); //Don't let the ship shoot or get hit when a new boss or ship is coming in ~Adam if(!mHasEntered || mTarget == null || mBoss == null || (mBoss != null && (mBoss.mEntryTime>0f||mBoss.mDying) ) ) { mInvincibleTimer = 1.5f; mShootTimer = 2f; if(transform.position.y > -33f) { mHasEntered = true; } } #region Don't let the ship leave the bounds of the screen ~Adamelse //Count down the shoot timer ~Adam mShootTimer -= Time.deltaTime; //Keep ship within screen bounds if(transform.position.x <= -20f) { transform.position = new Vector3(-20f, transform.position.y, transform.position.z); mMoveDir*=-1f; mDodgeTimer = 0f; if(mTarget != null) { mTargetPoint = mTarget.transform.position +(Vector3.down*20f) + new Vector3(Random.Range (0,3), 0,0); mTargetPoint = new Vector3(-19f, mTargetPoint.y, mTargetPoint.z); } } if (transform.position.x >= 20f) { transform.position = new Vector3(20f, transform.position.y, transform.position.z); mMoveDir*=-1f; mDodgeTimer = 0f; if(mTarget != null) { mTargetPoint = mTarget.transform.position +(Vector3.down*20f) + new Vector3(Random.Range (-3,0), 0,0); mTargetPoint = new Vector3(19f, mTargetPoint.y, mTargetPoint.z); } } if(transform.position.y <= -33f) { transform.position = new Vector3(transform.position.x, -33f, transform.position.z); mMoveDir*=-1f; mDodgeTimer = 0f; if(mTarget != null) { mTargetPoint = mTarget.transform.position +(Vector3.down*20f) + new Vector3(0, Random.Range (0,2),0); mTargetPoint = new Vector3(mTargetPoint.x, -32f, mTargetPoint.z); } } if (transform.position.y >= 23f) { transform.position = new Vector3(transform.position.x, 23, transform.position.z); mMoveDir*=-1f; mDodgeTimer = 0f; if(mTarget != null) { mTargetPoint = mTarget.transform.position +(Vector3.down*20f) + new Vector3(0, Random.Range (-2,0),0); mTargetPoint = new Vector3(mTargetPoint.x, 22f, mTargetPoint.z); } } #endregion //Don't try to go out of bounds due to the boss being too close to the bottom of the screen ~Adam if(mMoveDir.y < 0f && transform.position.y <-32f) { if(!mGoForCenter) { mMoveDir = new Vector3(mMoveDir.x,0f,mMoveDir.z); } } //Move the ship ~Adam if(!mFiringSuper && mBoss != null && mTarget != null) { transform.Translate(mMoveDir); } //Animate the ship ~Adam if(mShipSprite.GetComponent<Animator>() != null) { //Always firing ~Adam mShipSprite.GetComponent<Animator>().SetBool ("IsFiring", true); //Ship flying left ~Adam if(mMoveDir.x <= -0.02f) { mShipSprite.GetComponent<Animator>().SetInteger ("Direction", -1); } //Ship flying right ~Adam else if(mMoveDir.x >= 0.02f) { mShipSprite.GetComponent<Animator>().SetInteger ("Direction", 1); } //Ship flying straight/hovering else { mShipSprite.GetComponent<Animator>().SetInteger ("Direction", 0); } } //Toggle thrusters ~Adam if(mThrusters != null) { if(mMoveDir.y >= -0.02f && mThrusters.isStopped) { mThrusters.Play (); } else if(mMoveDir.y < -0.02f) { mThrusters.Stop(); } } //For debug testing hero ship damage if(Input.GetKeyDown(KeyCode.K)) { HitHeroShip(1); } //Keep target point within screen bounds if(mTarget != null) { if(mTargetPoint.x <= -20f) { mTargetPoint = mTarget.transform.position +(Vector3.down*20f) + new Vector3(Random.Range (0,5), 0,0); mTargetPoint = new Vector3(-19f, mTargetPoint.y, mTargetPoint.z); } if (mTargetPoint.x >= 20f) { mTargetPoint = mTarget.transform.position +(Vector3.down*20f) + new Vector3(Random.Range (-5,0), 0,0); mTargetPoint = new Vector3(19f, mTargetPoint.y, mTargetPoint.z); } if(mTargetPoint.y <= -33f) { mTargetPoint = mTarget.transform.position +(Vector3.down*20f) + new Vector3(0, Random.Range (0,2),0); mTargetPoint = new Vector3(mTargetPoint.x, -32f, mTargetPoint.z); } if (mTargetPoint.y >= 23f) { mTargetPoint = mTarget.transform.position +(Vector3.down*20f) + new Vector3(0, Random.Range (-2,0),0); mTargetPoint = new Vector3(mTargetPoint.x, 22f, mTargetPoint.z); } } }
// Use this for initialization void Start() { mMaxHits = mHitsRemaining; mDefaultSpeed = mSpeed; //Find the Boss ~Adam if(mTarget == null || mBoss == null) { if(FindObjectOfType<BossGenericScript>() != null) { mBoss = FindObjectOfType<BossGenericScript>(); mTarget = mBoss.transform; mTargetPoint = mTarget.transform.position +(Vector3.down*20f) + new Vector3(Random.Range (-5,5), Random.Range (-2,2),0); } } }