public virtual void InitCharacter(int level) { _animState = ECharacterAnimState.Normal; ScaleObject.transform.localScale = Vector3.one; UI.gameObject.SetActive(true); _powerup.InitPowerup(level); Lives.InitCounter(30, 30); // TODO according to level Mana.InitCounter(0, 15); // TODO according to level UpdateReadyMark(); _destroyed = false; _movable = true; _dead = false; DeadObject.SetActive(false); SetValueForce(level); UnselectForce(); }
protected virtual void PlayDeathAnimation() { _animState = ECharacterAnimState.Death; float time = 0.15f; LeanTween.cancel(ScaleObject); float scaleMin = 0f; UI.gameObject.SetActive(false); LeanTween.scale(ScaleObject, new Vector3(scaleMin, scaleMin, 1), time) .setEaseInOutSine() .setOnComplete(() => { gameObject.SetActive(false); }); LeanTween.cancel(DeadObject); DeadObject.transform.localScale = new Vector3(0, 0, 1); DeadObject.SetActive(true); LeanTween.scale(DeadObject, Vector3.one, time) .setEaseInOutSine(); }
protected virtual float PlayGainDamageAnimation() { _animState = ECharacterAnimState.GainDamage; //UpdateLivesView(); float time = 0.25f; LeanTween.cancel(ShakeObject); float shakePower = 0.2f; LeanTween.value(ShakeObject, 0.0f, 1.0f, time) .setOnUpdate((float val) => { Vector2 dxy = UnityEngine.Random.insideUnitCircle; ShakeObject.transform.localPosition = new Vector3(shakePower * dxy.x, shakePower * dxy.y, 0); }) .setOnComplete(() => { ShakeObject.transform.localPosition = Vector3.zero; _animState = ECharacterAnimState.Normal; }); return(time); }