Ejemplo n.º 1
0
    // Update is called once per frame
    void FixedUpdate()
    {
        if (startTime >= 0)
        {
            startTime         -= Time.deltaTime;
            transform.rotation = Turret.rotation;
            Direction          = Turret.up;
            velocity           = Direction.normalized;
            return;
        }

        if (Target == null || !Target.activeSelf)
        {
            Target = EnemyManagerScript.Instance.GetClosestEnemyInRange(transform.position, float.PositiveInfinity, EnemyTags);
            if (Target == null)
            {
                BlowUp();
            }
        }

        var direction = Target.transform.position - transform.position;
        var angle     = MathHelpers.Angle(direction, transform.up) * Time.deltaTime * Inertia * Mathf.Pow(velocity.sqrMagnitude, 0.5f);

        velocity      = velocity.Rotate(angle);
        acceleration *= 0.95f;
        velocity     += velocity * acceleration * Time.deltaTime;

        transform.position += (Vector3)velocity;
        transform.up        = velocity;

        shadow.position = transform.position + (Vector3)ShadowOffset * (InitialAcceleration - acceleration) / InitialAcceleration;
        shadow.rotation = transform.rotation;
    }
Ejemplo n.º 2
0
    void FixedUpdate()
    {
        if (segmentIndex >= path.NumSegments)
        {
            return;
        }

        if (t >= 1.0f)
        {
            segmentIndex++;
            if (segmentIndex >= path.NumSegments)
            {
                return;
            }

            RecomputeSegment();
        }

        var tangent = t * t * v1 + t * v2 + v3;

        t = t + Time.deltaTime * Speed / tangent.magnitude;

        transform.position    = Bezier.EvaluateCubic(A, B, C, D, t);
        transform.eulerAngles = new Vector3(0.0f, 0.0f, MathHelpers.Angle(tangent, Vector2.right));

        // if (gameObject.layer == LayerMask.NameToLayer("enemy"))
        //     EnemyManagerScript.Instance.UpdateEnemy(gameObject, path.NumSegments - segmentIndex - t);
    }
Ejemplo n.º 3
0
    private void TurnToEnemy(Vector2 position)
    {
        var direction = position - (Vector2)transform.position;
        var angle     = MathHelpers.Angle(direction, transform.up);

        transform.Rotate(0, 0, Mathf.Clamp(angle, -10, 10) * RotationSpeed * Time.deltaTime);
    }
Ejemplo n.º 4
0
    // Update is called once per frame
    void FixedUpdate()
    {
        time -= Time.deltaTime;
        if (time < 0)
        {
            BlowUp();
        }

        if (Target == null || !Target.activeSelf)
        {
            Target = EM.GetClosestEnemyInRange(transform.position, Range * 2, EnemyTags);
            if (Target == null)
            {
                BlowUp();
                return;
            }
        }

        var direction = Target.transform.position - transform.position;
        var angle     = MathHelpers.Angle(direction, transform.up) * Time.deltaTime * Inertia;

        velocity            = velocity.Rotate(angle);
        transform.position += (Vector3)velocity * Time.deltaTime;
        transform.up        = velocity;
    }
Ejemplo n.º 5
0
    void Start()
    {
        enemyTags = Enemies.Select(e => e.tag).ToList();
        var enemy = EnemyManagerScript.Instance.GetEnemyInRange(transform.position, float.PositiveInfinity, enemyTags);
        var angle = MathHelpers.Angle(enemy.transform.position - transform.position, transform.up);

        transform.eulerAngles = new Vector3(0, 0, angle);

        bulletPlaceholder = transform.Find("Rocket").gameObject;
    }
Ejemplo n.º 6
0
    // Update is called once per frame
    void FixedUpdate()
    {
        if (Target == null || !Target.activeSelf)
        {
            Target = EM.GetClosestEnemyInRange(transform.position, float.PositiveInfinity, EnemyTags);
            if (Target == null)
            {
                BlowUp();
                return;
            }
        }

        var direction = Target.transform.position - transform.position;
        var angle     = MathHelpers.Angle(direction, transform.up) * Time.deltaTime * Inertia;

        velocity  = velocity.Rotate(angle);
        velocity += (Vector2)direction.normalized * acceleration * Time.deltaTime;

        transform.position += (Vector3)velocity * Time.deltaTime;
        transform.up        = velocity;
    }