protected void Reset() { m_chargeNormal = Color.white; m_chargeStarted = Color.cyan; m_chargeReadyToRelease = Color.yellow; m_chargeFull = Color.red; // not efficient, but useful if you forget to set your reference in the inspector m_chargeUp = GameObject.FindObjectOfType(typeof(ChargeUp)) as ChargeUp; }
void Update() { Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); RaycastHit hitInfo; int layerMask = 1 << LayerMask.NameToLayer("InterfacePlane"); bool hit = Physics.Raycast(ray, out hitInfo, 100.0f, layerMask); if (hit) { pivot.transform.LookAt(hitInfo.point); } if (Input.GetMouseButtonDown(0)) { fireball = Instantiate(fireballPrefab) as GameObject; fireball.transform.parent = emitter; fireball.transform.localPosition = Vector3.zero; charging = true; chargingStarted = Time.time; } if (charging) { ChargeUp fireballCharge = fireball.GetComponent <ChargeUp>(); if (Input.GetMouseButtonUp(0)) { Vector3 pivotPos = pivot.position; Vector3 emitterPos = emitter.position; Vector3 direction = (emitterPos - pivotPos).normalized; fireball.transform.parent = null; fireballCharge.direction = direction; fireball.rigidbody.AddForce(direction * 20.0f, ForceMode.VelocityChange); charging = false; } else { float diffTime = Time.time - chargingStarted; float chargeLevel = Mathf.Min(diffTime / 3.0f, 1.0f); fireballCharge.chargeLevel = chargeLevel; } } }
protected void Reset() { // not efficient, but useful if you forget to set your reference in the inspector m_chargeUp = GameObject.FindObjectOfType(typeof(ChargeUp)) as ChargeUp; }