public void Throw(Direction direction) { transform.SetScale(0.25f); transform.localEulerAngles = new Vector3(0, 0, direction.ToRotationAngle()); Vector2 localMoveVector = direction.ToVector2() * shootDistance; if (tween != null) { Debug.LogError("Tween is already running"); gameObject.DestroySelf(); } tween = new GoTweenChain(); tween.insert(0, transform.localPositionTo(shootDuration, localMoveVector, true).eases(shootEase)); tween.insert(0, transform.scaleTo(0.125f, 1).eases(GoEaseType.QuartIn)); tween.insert(0.25f, transform.scaleTo(0.5f, 0).eases(GoEaseType.QuadOut)); tween.insertAction(timeBetweenWeapons, () => { if (onEnd != null) { onEnd(); } }); tween.Start(); tween.setOnCompleteHandler(c => gameObject.DestroySelf()); }
internal virtual void TakeDamage() { if (state == MonsterState.Living) { Vector3 splashVector = (transform.position - Player.Instance.transform.position).normalized; life -= 1; if (life == 0) { ApplySound(); state = MonsterState.Dying; GoTweenChain chain = new GoTweenChain(); chain.insert(0, transform .scaleTo(0.5f, 0.75f, true) .eases(GoEaseType.QuartOut) ); chain.insert(0, transform .localEularAnglesTo(0.5f, new Vector3(0, 0, RandomFloat.Range(-180, 180))) .eases(GoEaseType.QuadOut) ); chain.insert(0.25f, gameObject .alphaTo(0.25f, 0, GoEaseType.QuartOut) ); chain.setOnCompleteHandler(c => gameObject.DestroySelf()); chain.Start(); } transform.position += splashVector * 25; // bool isDying = ( life == 0 ); // transform.position += splashVector * ( isDying ? 100 : 25 ); } }
float AnimateOpening() { AbstractGoTween tween = null; switch (gateName) { case GateName.Basique: tween = sprite.transform.localPositionTo(1, new Vector3(-70, 0, 0), true); break; case GateName.Bleue: tween = sprite.transform.localPositionTo(1, new Vector3(0, -120, 0), true); break; case GateName.Cassée: { GoTweenChain chain = new GoTweenChain(); chain.insert(0, sprite.transform.localPositionTo(0.5f, new Vector3(-2, -3, 0))); chain.insert(0.5f, sprite.transform.localPositionTo(1.0f, new Vector3(-60, 770, 0))); chain.Start(); tween = chain; } break; case GateName.Cloche: { GoTweenChain chain = new GoTweenChain(); chain.insert(0, sprite.transform.localPositionTo(0.5f, new Vector3(5, -5, 0))); chain.insert(0.5f, sprite.transform.localPositionTo(1.0f, new Vector3(-30, 55, 0))); chain.Start(); tween = chain; } break; case GateName.Colonne: { GoTweenChain chain = new GoTweenChain(); chain.insert(0, spriteA.transform.localPositionTo(1, new Vector3(-75, 10, 0))); chain.insert(0, spriteB.transform.localPositionTo(1, new Vector3(95, 10, 0))); chain.insert(1, spriteA.transform.localPositionTo(1, new Vector3(-75, 95, 0))); chain.insert(1, spriteB.transform.localPositionTo(1, new Vector3(105, 95, 0))); chain.Start(); tween = chain; } break; case GateName.Herbe: tween = sprite.transform.localPositionTo(1, new Vector3(0, -40, 0)); break; case GateName.Jaune: tween = sprite.transform.localPositionTo(1, new Vector3(0, -70, 0)); break; case GateName.Oeil: tween = sprite.transform.localPositionTo(1, new Vector3(0, 85, 0)); break; case GateName.Orange: tween = sprite.transform.localPositionTo(1, new Vector3(70, 0, 0)); break; case GateName.Orientale: { GoTweenChain chain = new GoTweenChain(); chain.insert(0, spriteA.transform.localPositionTo(1, new Vector3(0, 50, 0), true)); chain.insert(0, spriteB.transform.localPositionTo(1, new Vector3(0, -50, 0), true)); chain.Start(); tween = chain; } break; case GateName.Rouge: tween = sprite.transform.localPositionTo(1, new Vector3(0, -70, 0), true); break; case GateName.TriangleDroite: tween = sprite.transform.localPositionTo(1, new Vector3(65, 0, 0), true); break; case GateName.TriangleGauche: tween = sprite.transform.localPositionTo(1, new Vector3(-70, 0, 0), true); break; case GateName.Verte: tween = sprite.transform.localPositionTo(1, new Vector3(0, -65, 0), true); break; default: return(0); } return(tween.totalDuration); }
internal ComboPaneResolution TryResolvingState( Player player, List<InputActionName> inputs ) { if ( isCompleted ) return ComboPaneResolution.Completed; bool isFailed = false; int activatedCount = 0; for ( int i = 0; i < combo.actions.Count; i++ ) { if ( i < inputs.Count ) if ( inputs[i] == combo.actions[i] ) activatedCount++; else { isFailed = true; break; } } if ( player.playerSide == PlayerSide.Left ) activatedCountPlayerLeft = activatedCount; if ( player.playerSide == PlayerSide.Right ) activatedCountPlayerRight = activatedCount; if ( isFailed ) { return ComboPaneResolution.Failed; } isCompleted = ( activatedCount == buttons.Count ); if ( isCompleted ) { state = ComboPaneState.Absorbed; player.PrepareAttack ( Size ); GoTweenChain chain = new GoTweenChain(); chain.append ( transform.scaleTo ( 0.125f, 1.5f ).eases ( GoEaseType.Linear ) ); chain.append ( transform.scaleTo ( 0.125f, 1.0f ).eases ( GoEaseType.Linear ) ); chain.insert ( 0.25f, transform.scaleTo ( 1.25f, 0.25f ).eases ( GoEaseType.QuadInOut ) ); chain.insert ( 0.25f, transform.positionTo ( 1.25f, player.ComboCollectPosition ).eases ( GoEaseType.QuadInOut ) ); chain.setOnCompleteHandler ( c => { gameObject.DestroySelf (); } ); chain.Start (); return ComboPaneResolution.Completed; } else { return ComboPaneResolution.NotCompleted; } }