Example #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);
        }
    }
Example #2
0
 void Start()
 {
     this.transform.position = MotionUtility.Normalize(this.gameObject);
     this.transform.Rotate(0f, 180f, 0f);
     this.gameController = FindObjectOfType <GameController>();
     this.player         = FindObjectOfType <Player>();
 }
Example #3
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);
            }
        }
    }
Example #4
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);
        }
    }
Example #5
0
    IEnumerator Move(float x, Func <float, bool> isValid, Func <float, bool> predicate, float rate)
    {
        isMoving = true;

        if (isValid(x))
        {
            while (predicate(x))
            {
                this.transform.position += new Vector3(rate, 0f, 0f);
                yield return(null);
            }
        }

        isMoving = false;
        this.transform.position = MotionUtility.Normalize(this.gameObject);
    }
Example #6
0
    void Update()
    {
        // fire rate

        if (Time.time < rateLock || !bullet)
        {
            return;
        }

        // keep the button down, like a machine gun.

        if (Input.GetMouseButton(mouseCode))
        {
            // mouse direction to shoot.

            Vector3 fireDirection = MotionUtility.GetMouseDirectionFrom(transform);

            // bullet creation

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

            // connect with bullet stabilizer to apply the impulse.

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

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

                return;
            }

            stab.layer = layer;

            stab.direction = fireDirection;

            stab.impulse = impulse;

            // fire rate lock

            rateLock = Time.time + fireRate;
        }
    }
Example #7
0
 /// <summary>
 /// Impulses the transform into mouse.
 /// </summary>
 void ImpulseIntoMouse()
 {
     ImpulseIntoMouse(MotionUtility.GetMouseDirectionFrom(transform).x, MotionUtility.GetMouseDirectionFrom(transform).y, impulse);
 }