// Use this for initialization void Start() { currObj = GetComponent <SpawnItems>().Objects3D[0]; HeavyScript = currObj.GetComponent <Hv_Sinusoidal_AudioLib>(); currObj.GetComponent <DestroyItems>().destroyTime = 6f; GetComponent <SpawnItems>().spawnTime = 3f; StartCoroutine(ChngMat(changeTime)); // Or whatever delay we want. }
void Awake() { HeavyScript = GetComponent <Hv_Sinusoidal_AudioLib>(); SetDataScript = GetComponent <ModalDataScript_Sinusoidal>(); //SetDataScript.SetGlassTop(); //SetDataScript.SetTheFreqs(); //SetDataScript.SetTheAmpls(); }
// Use this for initialization void Start() { HeavyScript = GetComponent <Hv_Sinusoidal_AudioLib>(); rb = GetComponent <Rigidbody>(); massObject = rb.mass; ScaleEverythingWithObject(); objectPerimeter = 0.675f * scaleAvg; //freq_modes = new float[10] { 1714.581299f, 1668.823242f, 5049.536133f, 1757.647705f, 2869.299316f, 4390.081787f, 6745.275879f, 13953.515625f, 11743.670654f, 20806.457520f }; //ampl_modes = new float[10] { 1f, 0.001744f, 0.043746f, 0.001430f, 0.004816f, 0.031406f, 0.068062f, 0.007815f, 0.005319f, 0.006524f }; // Wine bottle - body upper freq_modes = new float[10] { 2196.386719f, 2150.628662f, 3945.959473f, 2939.282227f, 2239.453125f, 2104.870605f, 6535.327148f, 4018.634033f, 6489.569092f, 6578.393555f }; ampl_modes = new float[10] { 1f, 0.244862f, 0.070771f, 0.136772f, 0.055802f, 0.050188f, 0.000222f, 0.084317f, 0.000197f, 0.000196f }; SetTheFreqs(); SetTheAmpls(); }
//void FixedUpdate() //{ // acceleration = (rigid.velocity.magnitude - lastVelocity) / Time.fixedDeltaTime; // lastVelocity = rigid.velocity.magnitude; // //Debug.Log(rigid.velocity); //} void OnCollisionEnter(Collision collision) { // determine which point of the object was struct and set the corresponding data SetDataScript.IdentifyObject(this.transform, collision.contacts[0].thisCollider.gameObject.transform.GetSiblingIndex()); //IMPORTANT!! //find out whether the object colliding is a surface or other modal object. //If modal object, find material and modify hardness and maybe collision magnitude ( for example two metal objects should have a very bright sound) //Could use the 2 objects' Q factors, normalize them and use the resulting mean of both to find the collision magnitude //SurfaceScript surfaceScript = collision.gameObject.GetComponent<SurfaceScript>(); // getting script attached on surface Hv_Sinusoidal_AudioLib otherObjectScript = collision.gameObject.GetComponent <Hv_Sinusoidal_AudioLib>(); //getting audio patch script from colliding object with sinusRolling script attached collisionMagnitude = 0.5f * massObject * collision.relativeVelocity.magnitude * collision.relativeVelocity.magnitude; //collisionMagnitude = collision.impulse.magnitude; //Debug.Log("Impulse: " + collisionMagnitude); //if (collisionMagnitude <= 10f) //{ switch (caseSwitch) { case 1: if (otherObjectScript != null) { HeavyScript.SetFloatParameter(Hv_Sinusoidal_AudioLib.Parameter.Impact_force1, collisionMagnitude + collisionMagnitude * ((otherObjectScript.qfactor / 5000 + HeavyScript.qfactor / 5000) / 2) / 2); } else { HeavyScript.SetFloatParameter(Hv_Sinusoidal_AudioLib.Parameter.Impact_force1, collisionMagnitude); //Debug.Log("Impulse: " + collisionMagnitude); } HeavyScript.SendEvent(Hv_Sinusoidal_AudioLib.Event.Whack1); //Debug.Log("whack1"); caseSwitch = 2; break; case 2: if (otherObjectScript != null) { HeavyScript.SetFloatParameter(Hv_Sinusoidal_AudioLib.Parameter.Impact_force2, collisionMagnitude + collisionMagnitude * ((otherObjectScript.qfactor / 5000 + HeavyScript.qfactor / 5000) / 2) / 2); } else { HeavyScript.SetFloatParameter(Hv_Sinusoidal_AudioLib.Parameter.Impact_force2, collisionMagnitude); } HeavyScript.SendEvent(Hv_Sinusoidal_AudioLib.Event.Whack2); //Debug.Log("whack2"); caseSwitch = 3; break; case 3: if (otherObjectScript != null) { HeavyScript.SetFloatParameter(Hv_Sinusoidal_AudioLib.Parameter.Impact_force3, collisionMagnitude + collisionMagnitude * ((otherObjectScript.qfactor / 5000 + HeavyScript.qfactor / 5000) / 2) / 2); } else { HeavyScript.SetFloatParameter(Hv_Sinusoidal_AudioLib.Parameter.Impact_force3, collisionMagnitude); } HeavyScript.SendEvent(Hv_Sinusoidal_AudioLib.Event.Whack3); //Debug.Log("whack3"); caseSwitch = 1; break; } //} //else //{ // Debug.Log("Impact magnitude not suitable for audio"); //} }
private void OnEnable() { _dsp = target as Hv_Sinusoidal_AudioLib; }
void OnCollisionEnter(Collision collision) { ContactPoint contact = collision.contacts[0]; //Debug.Log("World Contact = " + contact.point); Vector3 local_vec = transform.InverseTransformPoint(contact.point); Debug.Log("Local Contact = " + local_vec.ToString("F4")); Debug.Log(Mathf.Sqrt(local_vec.x * local_vec.x + local_vec.y * local_vec.y + local_vec.z * local_vec.z)); edge_mult = Mathf.Sqrt(local_vec.x * local_vec.x + local_vec.y * local_vec.y + local_vec.z * local_vec.z); SetTheFreqs(); SetTheAmpls(); Hv_Sinusoidal_AudioLib otherObjectScript = collision.gameObject.GetComponent <Hv_Sinusoidal_AudioLib>(); //getting audio patch script from colliding object with sinusRolling script attached collisionMagnitude = 0.5f * massObject * collision.relativeVelocity.magnitude * collision.relativeVelocity.magnitude; switch (caseSwitch) { case 1: if (otherObjectScript != null) { HeavyScript.SetFloatParameter(Hv_Sinusoidal_AudioLib.Parameter.Impact_force1, collisionMagnitude + collisionMagnitude * ((otherObjectScript.qfactor / 5000 + HeavyScript.qfactor / 5000) / 2) / 2); } else { HeavyScript.SetFloatParameter(Hv_Sinusoidal_AudioLib.Parameter.Impact_force1, collisionMagnitude); //Debug.Log("Impulse: " + collisionMagnitude); } HeavyScript.SendEvent(Hv_Sinusoidal_AudioLib.Event.Whack1); //Debug.Log("whack1"); caseSwitch = 2; break; case 2: if (otherObjectScript != null) { HeavyScript.SetFloatParameter(Hv_Sinusoidal_AudioLib.Parameter.Impact_force2, collisionMagnitude + collisionMagnitude * ((otherObjectScript.qfactor / 5000 + HeavyScript.qfactor / 5000) / 2) / 2); } else { HeavyScript.SetFloatParameter(Hv_Sinusoidal_AudioLib.Parameter.Impact_force2, collisionMagnitude); } HeavyScript.SendEvent(Hv_Sinusoidal_AudioLib.Event.Whack2); //Debug.Log("whack2"); caseSwitch = 3; break; case 3: if (otherObjectScript != null) { HeavyScript.SetFloatParameter(Hv_Sinusoidal_AudioLib.Parameter.Impact_force3, collisionMagnitude + collisionMagnitude * ((otherObjectScript.qfactor / 5000 + HeavyScript.qfactor / 5000) / 2) / 2); } else { HeavyScript.SetFloatParameter(Hv_Sinusoidal_AudioLib.Parameter.Impact_force3, collisionMagnitude); } HeavyScript.SendEvent(Hv_Sinusoidal_AudioLib.Event.Whack3); //Debug.Log("whack3"); caseSwitch = 1; break; } }
// Use this for initialization void Awake() { HeavyScript = GetComponent <Hv_Sinusoidal_AudioLib>(); scaleAvg = (transform.localScale.x + transform.localScale.y + transform.localScale.z) / 3f; }