Beispiel #1
0
    void OnCollisionEnter(Collision collision)
    {
        float collisionMagnitude = collision.relativeVelocity.magnitude;

        if (collisionMagnitude > thresholdVelocity)
        {
            Domino          otherDomino   = null;
            ContactPoint [] contactPoints = collision.contacts;
            bool            foundOther    = false;
            int             i             = 0;
            while (!foundOther && i < contactPoints.Length)
            {
                ContactPoint contactPoint     = contactPoints[i];
                GameObject   firstGameObject  = contactPoint.thisCollider.gameObject;
                GameObject   secondGameObject = contactPoint.otherCollider.gameObject;
                foundOther = ((firstGameObject == this.gameObject) && (secondGameObject.tag == "Domino"));
                if (foundOther)
                {
                    otherDomino = secondGameObject.GetComponent <Domino>();
                }
                i++;
            }

            if (foundOther)
            {
                if (!otherDomino.hasCollided)
                {
                    otherDomino.hasCollided = true;
                    LevelPropertiesScript.sharedInstance().nDominosCombo += 1;

                    audio.clip = this.audioFile;
                    float volume = Mathf.InverseLerp(thresholdVelocity, thresholdVelocity * 4, collisionMagnitude);
                    audio.volume = volume;
                    audio.Play();

                    if (this.followCamera != null)
                    {
                        CollisionFollowCameraScript followCameraScript = this.followCamera.GetComponent <CollisionFollowCameraScript>();
                        Vector3 position = this.followCameraPosition();
                        followCameraScript.positionTo = position;
                        followCameraScript.rotationTo = Quaternion.LookRotation(contactPoints[0].point - position);
                    }

                    LevelPropertiesScript.sharedInstance().updateFallingPosition(contactPoints[0].point);

                    Transform explosionTransform = (Transform)Instantiate(this.collisionParticleSystem, contactPoints[0].point, this.transform.rotation);
                    this.explosionParticleSystem = explosionTransform.gameObject;
                    ParticleSystem ps = this.explosionParticleSystem.particleSystem;

                    ps.startColor = this.gameObject.renderer.material.color;
                }
            }
        }
    }
Beispiel #2
0
    // Use this for initialization
    void Start()
    {
        this.cameraSpeed = 1.0f;
        this.hasCollided = false;

        if (this.followCamera != null)
        {
            CollisionFollowCameraScript followCameraScript = this.followCamera.GetComponent <CollisionFollowCameraScript>();
            Vector3 position = this.followCameraPosition();
            followCameraScript.positionTo = position;
            followCameraScript.rotationTo = Quaternion.LookRotation(this.transform.position - position);
        }
    }