private void OnDrawGizmosSelected() { if (camperTracker == null) { return; } target = camperTracker.GetLastPosition().SetY(0); UnityEditor.Handles.color = new Color(0, 1, 1); UnityEditor.Handles.ArrowCap(-1, target + Vector3.up, Quaternion.FromToRotation(Vector3.forward, Vector3.down), 1); UnityEditor.Handles.CircleCap(-1, target, Quaternion.FromToRotation(Vector3.forward, Vector3.up), 1); int timesteps = Mathf.FloorToInt(1.5f / Time.fixedDeltaTime); Vector3 vel = VectorHelper.CalculateVelocity(target - transform.position, timesteps); Vector3 last = transform.position; Gizmos.color = new Color(0, 1, 0, 0.5f); for (int i = 0; i < timesteps; i++) { vel += Physics.gravity * Time.fixedDeltaTime; Vector3 next = i == timesteps - 1 ? target : last + vel * Time.fixedDeltaTime; Gizmos.DrawLine(last, next); last = next; } }
public void FireInArcTowards(BossProjectile prefab, Vector3 target, float impactAfter = 1) { BossProjectile clone = Instantiate(prefab, transform.position, Quaternion.identity); clone.body = clone.GetComponent <Rigidbody>(); var delta = target - transform.position; clone.body.velocity = VectorHelper.CalculateVelocity(delta, impactAfter / Time.fixedDeltaTime); // Look where you goin, chump clone.transform.forward = clone.body.velocity; }
/// <param name="prefab">The unit to instantiate from (duplicate) when firing.</param> /// <param name="impactAfter">Number of seconds for when object is supposed to reach <see cref="target"/>.</param> public void FireAt(SelfDestructUnit prefab, float impactAfter) { SelfDestructUnit clone = Instantiate(prefab, transform.position, Quaternion.identity); clone.delay = impactAfter; clone.target = target; // Add randomization clone.target += Random.Range(0, 360).FromDegrees(Random.Range(0, 8)).xzy(0); // Get components var body = clone.GetComponent <Rigidbody>(); // Calculate velocity var delta = clone.target - clone.transform.position; body.velocity = VectorHelper.CalculateVelocity(delta, impactAfter / Time.fixedDeltaTime); clone.transform.forward = body.velocity.normalized; //fish launch anim fishAnim.SetTrigger("Launch"); }