private void freezeObject(TornadoObject target) { if (target.isStuck) // is stuck { Freezable f = frozenObjects.Find(x => x.obj == target); f.Delete(); frozenObjects.Remove(f); AudioManager.instance.Play("wubAway"); if (AudioManager.instance.IsPlaying("wub")) { AudioManager.instance.Stop("wub"); } } else // stuckify the object { if (frozenObjects.Count >= maxFreezes) { frozenObjects[0].Delete(); frozenObjects.RemoveAt(0); } AudioManager.instance.Play("wub"); frozenObjects.Add(new Freezable(target, Instantiate(spawnDisc, target.transform.position, Quaternion.identity, target.transform))); } }
private void OnCollisionEnter(Collision collision) { TornadoObject obj = collision.gameObject.GetComponent <TornadoObject>(); if (obj == null) { return; } obj.isStuck = true; // Spawn Particles and stuff here. Destroy(gameObject); }
private void handlePrevTarget() { if (prevTarget != null) { curTime++; if (curTime / 60.0 > endBuffer) { curTime = 0; prevTarget = null; targetReticle.Color = Color.white; } else { targetReticle.Color = Color.green; if (Input.GetMouseButtonDown(0)) { freezeObject(prevTarget); } } } }
private void targetObject() { RaycastHit hit; if (Physics.Raycast(transform.position, transform.forward, out hit, targetDistance, freezeLayer)) { targetReticle.Color = Color.green; if (Input.GetMouseButtonDown(0)) { freezeObject(hit.transform.gameObject.GetComponent <TornadoObject>()); } else { prevTarget = hit.transform.gameObject.GetComponent <TornadoObject>(); curTime = 0; } } else { handlePrevTarget(); } }
public Freezable(TornadoObject obj, GameObject particle) { this.obj = obj; this.particle = particle; obj.isStuck = true; }