Exemplo n.º 1
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;
    }
Exemplo n.º 2
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;
    }
Exemplo n.º 3
0
    // Update is called once per frame
    void Update()
    {
        var enemy = EM.GetEnemyInRange(transform.position, Range, enemyTags);

        if (enemy != null)
        {
            // TurnToEnemy(enemy.transform.position + enemy.transform.right * 32);

            if (timeToShoot < 0)
            {
                GameObject bullet = Instantiate(BulletPrototype, transform);
                //bullet.transform.position = transform.position;
                //bullet.transform.rotation = transform.rotation;

                var bulletScript = bullet.GetComponent <FlyingShotScript>();
                bulletScript.Speed     = BulletSpeed;
                bulletScript.Range     = Range;
                bulletScript.Direction = EnemyDirection(enemy.transform.position);
                bulletScript.Damage    = Damage;
                bulletScript.Target    = enemy;
                bulletScript.EnemyTags = enemyTags;
                bulletScript.Turret    = transform;

                //bullet.SetActive(true);

                timeToShoot = ShootingPeriod;
                return;
            }
        }
        else
        {
            var closestEnemy = EM.GetClosestEnemyInRange(transform.position, Range * 2, enemyTags);
            //if (closestEnemy != null) TurnToEnemy(closestEnemy.transform.position + closestEnemy.transform.right * 32);
        }

        timeToShoot -= Time.deltaTime;
    }