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); } }
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); } } }
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); } }