Beispiel #1
0
    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;
        }
    }
Beispiel #2
0
    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;
    }
Beispiel #3
0
    /// <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");
    }