protected override void Awake() { base.Awake(); mMoveToTarget = GetComponent <RigidBodyMoveToTarget>(); tank.setStateCallback += OnTankStateChanged; bodyCtrl.rigidbody.isKinematic = true; bodyCtrl.enabled = false; gravityCtrl.enabled = false; }
protected override void SpawnStart() { base.SpawnStart(); if (!mMover) { RigidBodyMoveToTarget rigidMover = stats.GetComponent <RigidBodyMoveToTarget>(); if (rigidMover) { mMover = rigidMover.target; } } }
bool _DoStuffMoveOfsY(RigidBodyMoveToTarget mover, float start, float end, float curTime) { float delay = Mathf.Abs(end - start) / stuffSpeed; if (curTime < delay) { float t = Holoville.HOTween.Core.Easing.Sine.EaseInOut(curTime, 0.0f, 1.0f, delay, 0.0f, 0.0f); mover.offset.y = Mathf.Lerp(start, end, t); return(false); } else { mover.offset.y = end; return(true); } }
protected override void ActivatorWakeUp() { switch ((EntityState)state) { case EntityState.Normal: case EntityState.Hurt: case EntityState.Stun: if (!respawnOnSleep) { if (attachGO) { attachGO.SetActive(true); } if (mProj) { mProj.gameObject.SetActive(true); } else { if (!string.IsNullOrEmpty(attachProjType)) { mProj = Projectile.Create(projGroup, attachProjType, attachProjPt.position, Vector3.zero, null); RigidBodyMoveToTarget attacher = mProj.GetComponent <RigidBodyMoveToTarget>(); if (attacher) { attacher.target = attachProjPt; } mProj.releaseCallback += OnProjRelease; if (attachProjChain) { attachProjChain.SetActive(true); } } } } break; } base.ActivatorWakeUp(); }
protected override void StateChanged() { base.StateChanged(); switch ((EntityState)state) { case EntityState.Stun: if (animator) { animator.Pause(); } break; case EntityState.Normal: if (attachGO) { attachGO.SetActive(true); } if (animator && !animator.isPlaying) { animator.Play("move"); } if (prevState != (int)EntityState.Stun) { if (anim) { anim.Play(anim.DefaultClip); } if (!mProj) { if (!string.IsNullOrEmpty(attachProjType)) { mProj = Projectile.Create(projGroup, attachProjType, attachProjPt.position, Vector3.zero, null); RigidBodyMoveToTarget attacher = mProj.GetComponent <RigidBodyMoveToTarget>(); if (attacher) { attacher.target = attachProjPt; } mProj.releaseCallback += OnProjRelease; if (attachProjChain) { attachProjChain.SetActive(true); } } } else { mProj.gameObject.SetActive(true); } } break; case EntityState.Dead: if (attachGO) { attachGO.SetActive(false); } if (mProj) { mProj.releaseCallback -= OnProjRelease; if (mProj.isAlive) { RigidBodyMoveToTarget attacher = mProj.GetComponent <RigidBodyMoveToTarget>(); if (attacher) { attacher.target = null; } if (mProj.stats) { mProj.stats.curHP = 0; } else { mProj.state = (int)Projectile.State.Dying; } } mProj = null; if (attachProjChain) { attachProjChain.SetActive(false); } } break; case EntityState.RespawnWait: break; } }
void ToPhase(Phase phase) { if (mCurPhase == phase) { return; } //prev switch (mCurPhase) { case Phase.Move: StopCoroutine(moveFireRoutine); CancelInvoke(moveToPlayerFunc); CancelInvoke(nextPhaseFunc); tank.bodyCtrl.moveSide = 0.0f; break; case Phase.FireSeeker: StopCoroutine(seekerFireRoutine); seekerAnimDat.Play("default"); break; } switch (phase) { case Phase.Move: if (tank.bodyCtrl.isGrounded) { if (!IsInvoking(moveToPlayerFunc)) { InvokeRepeating(moveToPlayerFunc, 0.0f, moveFacePlayerDelay); } } else { tank.bodyCtrl.moveSide = 0.0f; //wait till we land } Invoke(nextPhaseFunc, moveNextPhaseDelay); StartCoroutine(moveFireRoutine); break; case Phase.FireSeeker: StartCoroutine(seekerFireRoutine); break; case Phase.MoveNoTank: bodySpriteCtrl.StopOverrideClip(); RigidBodyMoveToTarget mover = GetComponent <RigidBodyMoveToTarget>(); mover.enabled = false; bodyCtrl.rigidbody.isKinematic = false; bodyCtrl.enabled = true; gravityCtrl.enabled = true; bodySpriteCtrl.controller = bodyCtrl; bodySpriteCtrl.moveClip = cryClip; bodySpriteCtrl.idleClip = cryClip; bodySpriteCtrl.upClips[0] = cryClip; bodySpriteCtrl.downClips[0] = cryClip; bodySpriteCtrl.RefreshClips(); mCurMovePtInd = 0; break; case Phase.Dead: bodyCtrl.rigidbody.isKinematic = false; bodyCtrl.enabled = true; gravityCtrl.enabled = true; bodySpriteCtrl.controller = bodyCtrl; bodyCtrl.moveSide = 0.0f; Vector3 vel = bodyCtrl.localVelocity; vel.x = 0; bodyCtrl.localVelocity = vel; bodySpriteCtrl.StopOverrideClip(); break; } mCurPhase = phase; }
int MoverCompare(RigidBodyMoveToTarget x, RigidBodyMoveToTarget y) { return(x.name.CompareTo(y.name)); }