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; //} }
private void changeMaterial(SonarMaterials material) { hitMaterial = material; sonarTime = sonarDelay - 0.01f; }