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); } }
void Start() { this.transform.position = MotionUtility.Normalize(this.gameObject); this.transform.Rotate(0f, 180f, 0f); this.gameController = FindObjectOfType <GameController>(); this.player = FindObjectOfType <Player>(); }
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); } }
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); }
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; } }
/// <summary> /// Impulses the transform into mouse. /// </summary> void ImpulseIntoMouse() { ImpulseIntoMouse(MotionUtility.GetMouseDirectionFrom(transform).x, MotionUtility.GetMouseDirectionFrom(transform).y, impulse); }