- Home /
How to custom filter target objects?
Based on Mr. Lagues FieldOfView, I would like to know how to give custom statements dynamically to filter/remove some visibleTargets for example if the targets are in the same teams that can be determined by their teamscript.
.
But I dont want to write these conditions in this script, since there could be plenty of those.
.
How can I call a function from outer inside that loop that can do anything with col and returns a bool to add this as a valid target? I mean something like this:
.
FieldOfView.cs:
void Start(){
StartCoroutine(FindTargetWithDelay(0.3f);
}
IEnumerator FindTargetWithDelay(float delay){
while (true){
yield return new WaitForSeconds(delay);
FindVisibleTargets();
}
}
IEnumerator FindVisibleTargets(float delay){
yield return new WaitForSeconds(delay);
visibleTargets.Clear();
targetsInViewRadius = Physics.OverlapSphere(transform.position, viewRadius, targetMask).ToList();
foreach(Collider col in targetsInViewRadius){
if(CustomFilter(col)){ //This function should do the filtering (default true)
Vector3 dirToTarget = (col.transform.position - transform.position);
if(Vector3.Angle(transform.forward, dirToTarget.normalized) < viewAngle * 0.5f){
float dstToTarget = dirToTarget.magnitude;
if(!Physics.Raycast(transform.position, dirToTarget, dstToTarget, obstacleMask))
visibleTargets.Add(col.transform);
}
}
}
}
//Override this function in other script. No filtering when no overriding reference is found
public virtual bool CustomFilter(Collider col){
return true;
}
On an enemy with attached FieldOfView, i would call the overriding function:
Enemy.cs:
public override bool CustomFilter(Collider col){
return col.GetComponent<Team>().teamName != team.teamName;
}
.
But how do I pass this function to be called by FieldOfView? Transform.SendMessage is void and does not return a boolean.
Your answer
Follow this Question
Related Questions
Custom font completely broken in Unity 4. 4 Answers
I am following a tilemap tutorial, however the UV layout is strange. How can I fix this? 0 Answers
Different font size in dynamic font causes heavy load in memory? 0 Answers
Should I use built-in tilemaps or create my own tilemap system? 1 Answer
Best way to transition one mesh to another with the option to change the target mesh 0 Answers