void Update() { switch (currentState) { case RocketFlyState.WAITING_FOR_END: if (GameManager.Instance.CurrentState == GameManager.State.Launch) { director.Play(); currentState = RocketFlyState.WAITING; } break; case RocketFlyState.PLAYER_JUMPING: PlayerJumpingState(); break; case RocketFlyState.ROCKET_FLYING: foreach (var o in otherObjects) { o.AddExplosionForce(throwAwayForce, Vector3.zero, 40f); } RocketFlyingState(); break; } }
public void RocketFlyAway() { var players = FindObjectsOfType <PlayerInfo>() .Select(pi => pi.GetComponent <Transform>()) .Where(tr => tr != winner); var boxes = FindObjectsOfType <Box>() .Select(b => b.GetComponent <Transform>()); otherObjects = players.Union(boxes) .Select(o => o.GetComponent <Rigidbody>()) .ToArray(); rocketDirection = Vector3.up; onGroundParticles.SetActive(false); flyingParticles.SetActive(true); flyAwayCamera.enabled = true; currentState = RocketFlyState.ROCKET_FLYING; }
public void PlayerJumpToRocket() { var w = GameManager.Instance.Winner; if (w == null) { Debug.LogError("Winner is null!"); return; } winner = w.GetComponent <Transform>(); var rb = winner.GetComponent <Rigidbody>(); var collider = winner.GetComponent <Collider>(); rb.isKinematic = true; rb.useGravity = false; collider.enabled = false; winnerOrigin = rb.position; currentState = RocketFlyState.PLAYER_JUMPING; }