public override Brain.SensedInfo Sense() { Brain.SensedInfo si = new Brain.SensedInfo(); GameObject player = GameObject.Find("Player"); float dist = (player.transform.position - transform.position).magnitude; if (dist <= distance && Vector3.Angle(transform.forward, player.transform.position - transform.position) <= SightAngle && !Physics.Raycast(transform.position, (player.transform.position - transform.position + transform.up).normalized, dist, 1 << LayerMask.NameToLayer("Map"))) { si.AlertingFactor = 1.0f; si.CertaintyIsPlayer = 1.0f; si.CertaintyOfDirection = 1.0f; si.CertaintyOfDistance = 1.0f; si.SensedDirection = (player.transform.position - transform.position).normalized; si.SensedDistance = dist; } else { si.AlertingFactor = 0.0f; } return si; }
public override Brain.SensedInfo Sense() { Brain.SensedInfo result = new Brain.SensedInfo(); GameObject player = GameObject.Find("Player"); result.CertaintyIsPlayer = 1; result.CertaintyOfDistance = 1; result.CertaintyOfDirection = 1; result.AlertingFactor = 1; result.SensedDirection = (player.transform.position - transform.position).normalized; result.SensedDistance = Vector3.Distance(player.transform.position, transform.position); return result; }
public override Brain.SensedInfo Sense() { Brain.SensedInfo result = new Brain.SensedInfo(); int addedCount = 0; for (int i = 0; i < lastIndex; i++) { if (heardInterests[i] == null) { heardInterests[i] = heardInterests[--lastIndex]; } if (i < lastIndex && heardInterests[i] != null) { //float[] data = new float[1]; //heardInterests[i].clip.GetData(data, heardInterests[i].timeSamples); //float level = data[0]; float ratio = Mathf.Max(0, distance - (heardInterests[i].transform.position - transform.position).magnitude) / distance; float intensity = ratio * ratio; float sqrtRatio = Mathf.Sqrt(ratio); Debug.Log("Listening"); result.CertaintyIsPlayer += ((heardInterests[i].tag == "PlayerMadeSound") ? 1 : 0) * sqrtRatio; result.CertaintyOfDirection += sqrtRatio; result.CertaintyOfDistance += sqrtRatio; result.AlertingFactor += Mathf.Pow( ratio, 0.1f ); result.SensedDirection += (heardInterests[i].transform.position - transform.position).normalized; result.SensedDistance += (heardInterests[i].transform.position - transform.position).magnitude; addedCount++; } } if (lastIndex > 0) { result.CertaintyIsPlayer /= addedCount; result.CertaintyOfDirection /= addedCount; result.CertaintyOfDistance /= addedCount; result.AlertingFactor /= addedCount; result.SensedDirection /= addedCount; result.SensedDistance /= addedCount; result.SensedDirection.Normalize(); } return result; }
public override Brain.SensedInfo Sense() { Brain.SensedInfo result = new Brain.SensedInfo(); LightDetector light = FindObjectOfType<LightDetector>(); if (Vector3.Angle(light.transform.forward, transform.position - light.transform.position) < angle) { result.CertaintyIsPlayer = 1; result.CertaintyOfDistance = 1; result.CertaintyOfDirection = 1; result.AlertingFactor = 1; result.SensedDirection = (light.transform.position - transform.position).normalized; result.SensedDistance = (light.transform.position - transform.position).magnitude; } return result; }
public override Brain.SensedInfo Sense() { Brain.SensedInfo result = new Brain.SensedInfo(); LightDetector light = FindObjectOfType<LightDetector>(); Color seenPixel; if (light.CanSee(gameObject, out seenPixel)) { float brightness = Mathf.Min( (seenPixel.r + seenPixel.g + seenPixel.b) / 2, 1 ); result.CertaintyIsPlayer = brightness; result.CertaintyOfDistance = brightness; result.CertaintyOfDirection = brightness; result.AlertingFactor = Mathf.Min( 1, brightness*10 ); result.SensedDirection = (light.transform.position - transform.position).normalized; result.SensedDistance = (light.transform.position - transform.position).magnitude; } return result; }
public override Brain.SensedInfo Sense() { Brain.SensedInfo result = new Brain.SensedInfo(); Debug.Log("Touching: " + isTouching); if( isTouching ) { GameObject player = GameObject.Find("Player"); result.CertaintyIsPlayer = 1; result.CertaintyOfDistance = 1; result.CertaintyOfDirection = 1; result.AlertingFactor = 1; result.SensedDirection = (player.transform.position - transform.position).normalized; result.SensedDistance = Vector3.Distance(player.transform.position, transform.position); } //isTouching = false; return result; }
public override Brain.SensedInfo Sense() { Brain.SensedInfo result = new Brain.SensedInfo(); HeadLamp lamp = FindObjectOfType<HeadLamp>(); float dist = Vector3.Distance(lamp.transform.position, transform.position); bool isInLamp = lamp.GetComponent<Light>().enabled && dist < lamp.GetComponent<Light>().range && Mathf.Acos(Vector3.Dot((transform.position - lamp.transform.position).normalized, lamp.transform.forward)) < Mathf.Deg2Rad * lamp.GetComponent<Light>().spotAngle/2 && !Physics.Raycast( lamp.transform.position, (transform.position - lamp.transform.position).normalized, dist, 1 << LayerMask.NameToLayer("Map") ); if (isInLamp) { result.CertaintyIsPlayer = 1; result.CertaintyOfDistance = 1; result.CertaintyOfDirection = 1; result.AlertingFactor = 1; result.SensedDirection = (lamp.transform.position - transform.position).normalized; result.SensedDistance = dist; } return result; }
public override Brain.SensedInfo Sense() { Brain.SensedInfo si=new Brain.SensedInfo(); GameObject player = GameObject.Find("Player"); RaycastHit hit; if (Vector3.Distance(player.transform.position, transform.position) <= distance && !Physics.Raycast(transform.position+transform.up, (player.transform.position - transform.position).normalized, out hit, Vector3.Distance(transform.position, player.transform.position), 1 << LayerMask.NameToLayer("Map"))) { si.AlertingFactor = 1.0f; si.CertaintyIsPlayer = 1.0f; si.CertaintyOfDirection = 1.0f; si.CertaintyOfDistance = 1.0f; si.SensedDirection = (player.transform.position - transform.position).normalized; si.SensedDistance = Vector3.Distance(player.transform.position, transform.position); } else { si.AlertingFactor = 0.0f; } return si; }