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()); }