Exemplo n.º 1
0
    void Update()
    {
        // on key press, inject an impulse into the Motion.

        if (Input.GetMouseButton(1))
        {
            // toggle?

            if (!freezeLastCursorPosition)
            {
                ImpulseIntoMouse();
            }
            else
            {
                // back up last x, y.

                lastCursorPosition = Camera.main.ScreenToWorldPoint(Input.mousePosition);
            }
        }
        else
        {
            Screen.lockCursor = false;
        }

        // if toggle, toggle into the last cursor position.

        if (freezeLastCursorPosition && lastCursorPosition != Vector3.zero)
        {
            Vector3 direction = MotionUtility.GetDirection(transform.position, lastCursorPosition);

            ImpulseIntoMouse(direction.x, direction.y, impulse);
        }
    }
Exemplo n.º 2
0
    private float rateLock = 1;     // starts 1 seconds late, by default.


    void Update()
    {
        if (Time.time > rateLock)
        {
            // player tag.

            if (usePlayerAsFocus)
            {
                GameObject player = GameObject.FindWithTag(Tag.Player);

                if (player)
                {
                    focus = player.transform;
                }
            }

            // bullet factory (?)

            if (bullet && focus)
            {
                // direction / creation

                Vector3 fireDirection = MotionUtility.GetDirection(transform.position, focus.transform.position);

                Transform fireBullet = Instantiate(bullet, transform.position, Quaternion.identity) as Transform;

                // stabilizer

                BulletStabilizer stab = fireBullet.GetComponent <BulletStabilizer>();

                if (!stab)
                {
                    // the bullet stabilizer is required.

                    return;
                }

                // follow?

                if (followFocus)
                {
                    stab.enemy = focus;
                }

                stab.layer = layer;

                stab.direction = fireDirection;

                stab.impulse = impulse;

                // fire rate lock (with variation)

                rateLock = Time.time + Random.Range(rate, rate + rateVariation);
            }
        }
    }
Exemplo n.º 3
0
    void Update()
    {
        // keep the transform on the layer.

        if (transform.position.z != layer)
        {
            transform.position = new Vector3(transform.position.x, transform.position.y, layer);
        }

        // follow the enemy if exists.

        if (enemy)
        {
            direction = MotionUtility.GetDirection(transform.position, enemy.transform.position);
        }
    }