void OnEnable() { rb = GetComponent <Rigidbody2D>(); boostTimer = 0; boostDirection = SpacecraftAction.Direction.None; rotationDirection = SpacecraftAction.Direction.None; rotationTimer = 0; }
public static SpacecraftAction ParseCard(ActionCard card) { //Debug.Log(card.type); if (card.type.Equals("forward") || card.type.Equals("backward")) { SpacecraftAction.Direction direction = SpacecraftAction.Direction.None; switch (card.type) { case "forward": direction = SpacecraftAction.Direction.Forwards; break; case "backward": direction = SpacecraftAction.Direction.Backwards; break; } float force = card.forceOrVelocity; float duration = card.duration; float fuelCost = card.fuelCost; return(new SpacecraftBoost(direction, fuelCost, force, duration)); } else if (card.type.Contains("rotate")) { SpacecraftAction.Direction direction = SpacecraftAction.Direction.None; switch (card.type) { case "rotateLeft": direction = SpacecraftAction.Direction.Left; break; case "rotateRight": direction = SpacecraftAction.Direction.Right; break; } float velocity = card.forceOrVelocity; float duration = card.duration; float fuelCost = 1; return(new SpacecraftRotation(direction, fuelCost, velocity, duration)); } else if (card.type.Equals("gravityMine")) { return(new SpacecraftWeaponAction(SpacecraftWeaponAction.WeaponType.GravityMine, card.fuelCost)); } else if (card.type.Equals("laser")) { return(new SpacecraftWeaponAction(SpacecraftWeaponAction.WeaponType.Laser, card.fuelCost)); } else if (card.type.Equals("rocket")) { return(new SpacecraftWeaponAction(SpacecraftWeaponAction.WeaponType.Rocket, card.fuelCost)); } else if (card.type.Equals("none")) { return(new SpacecraftRotation(SpacecraftRotation.Direction.Forwards, 0, 0, 2)); } return(null); }
public void Rotate(SpacecraftAction.Direction direction, float speed, float duration) { if (direction == SpacecraftAction.Direction.Left || direction == SpacecraftAction.Direction.Right) { rotationDirection = direction; angularSpeed = speed; rotationTimer = duration; } }
public void Boost(SpacecraftAction.Direction direction, float force, float duration) { if (direction == SpacecraftAction.Direction.Forwards || direction == SpacecraftAction.Direction.Backwards) { thrustersController.Boost(direction); boostDirection = direction; boostForce = force; boostTimer = duration; EventManager.TriggerEvent("spacecraft_boost_start"); } }
void Update() { if (rotationDirection != SpacecraftAction.Direction.None) { rotationTimer -= Time.deltaTime; float fac = Time.deltaTime; if (rotationTimer < 0) { fac += rotationTimer; rotationTimer = 0; rotationDirection = SpacecraftAction.Direction.None; } if (rotationDirection == SpacecraftAction.Direction.Left) { transform.Rotate(new Vector3(0, 0, angularSpeed * fac)); } else { transform.Rotate(new Vector3(0, 0, -angularSpeed * fac)); } float dot = Vector2.Dot(transform.right.normalized, rb.velocity.normalized); if (dot >= 0) { rb.velocity = transform.right * rb.velocity.magnitude; } else { rb.velocity = transform.right * -rb.velocity.magnitude; } } if (boostDirection != SpacecraftAction.Direction.None) { boostTimer -= Time.deltaTime; float fac = Time.deltaTime; if (boostTimer < 0) { fac += boostTimer; boostTimer = 0; boostDirection = SpacecraftAction.Direction.None; EventManager.TriggerEvent("spacecraft_boost_stop"); thrustersController.StopBoost(); } if (boostDirection == SpacecraftAction.Direction.Forwards) { rb.AddRelativeForce(new Vector2(boostForce * fac, 0)); } else if (boostDirection == SpacecraftAction.Direction.Backwards) { rb.AddRelativeForce(new Vector2(-boostForce * fac, 0)); } } }
public void Boost(SpacecraftAction.Direction direction) { switch (direction) { case SpacecraftAction.Direction.Forwards: ActivateForwardsBoosters(); return; case SpacecraftAction.Direction.Backwards: ActivateBackwardsBoosters(); return; } }