Exemple #1
0
    public void CastRay()
    {
        RaycastHit hit;

        Debug.DrawRay(transform.position, transform.forward * 10, Color.green);

        if (Physics.Raycast(transform.position, transform.forward, out hit, sonarReach, layerMask))
        {
            //if (hit.transform.tag == "Wall")
            //{

            //    Vector3 hitPoint = hit.point;
            //    float hitDistance = Vector3.Distance(hitPoint, transform.position);
            //    float newConstant = Mathf.Log(hitDistance, 2);
            //    if (newConstant < .7f)
            //    {
            //        newConstant = .7f;
            //    }
            //    //Debug.Log(newConstant);

            //    sonarSource.pitch = (sonarMaxPitch / sonarReach) * (sonarReach - hitDistance) * 0.5f + sonarMaxPitch * (1f / newConstant);


            //}

            if (hit.transform.parent.GetComponent <SonarObject>())
            {
                SonarObject sonarObject = hit.transform.parent.GetComponent <SonarObject>();

                //Debug.Log((int)sonarObject.material);

                Vector3 hitPoint = hit.point;
                hitDistance = Vector3.Distance(hitPoint, transform.position);
                //Debug.Log(hitDistance);
                changeSonarDelay(hitDistance);

                if (sonarObject.material != hitMaterial)
                {
                    changeMaterial(sonarObject.material);
                }
            }
            else
            {
                hitMaterial = SonarMaterials.none;
            }
        }

        //else
        //{
        //    sonarSource.pitch = sonarMinPitch;
        //}
    }
Exemple #2
0
 private void changeMaterial(SonarMaterials material)
 {
     hitMaterial = material;
     sonarTime   = sonarDelay - 0.01f;
 }