public void OnLaunch(LaunchEventArgs e) { var rigidBody = GetComponent <Rigidbody2D>(); rigidBody.AddForce(new Vector2(e.HorizontalVelocity, e.VerticleVelocity)); rigidBody.AddTorque(e.Torque); }
private void Update() { if (Manager.IsPlaying()) { if (!launched) { var powerBar = PowerBarObj.GetComponent <PowerBar>(); if (Input.GetMouseButton(0)) { //Power Bar fill/deplete launching = true; var progress = _power < 100 ? _power : 200 - _power; powerBar.SetProgress(progress); _armAngle = (Mathf.Sqrt(progress / 20f + 0.2f) - Mathf.Sqrt(0.2f)) * 25; Arms.transform.eulerAngles = new Vector3(0, 0, _armAngle); } else { if (launching) { // Launch Event var args = new LaunchEventArgs(); var throwLevel = Manager.ThrowStrengthLevel + 1; var hvelocity = Mathf.Max(Mathf.Sqrt(throwLevel * 2) / 2f, throwLevel / 10f) * 100; var vvelocity = Mathf.Max(Mathf.Sqrt(throwLevel * 2) / 2f, throwLevel / 10f) * 400; var power = _power < 100 ? _power : 200 - _power; if (power > 98) { power = 150; } if (power < 30) { power = 30; } args.HorizontalVelocity = hvelocity * (power / 100f); args.VerticleVelocity = vvelocity * (power / 100f); args.Torque = throwLevel * 5 * (new System.Random().Next(2) == 0 ? -1 : 1); Manager.I.OnLaunch(args); Destroy(joint); launching = false; launched = true; Destroy(PowerBarObj); } } } } }
public virtual void OnLaunch(LaunchEventArgs e) { _stages.Clear(); foreach (var stageObject in StageTypes) { var stage = stageObject.GetComponent <Stage>(); stage.Duration = 5000; _stages.Add(stage); } LaunchEvent(e); }