- Home /
Problems with Minimap
Hi, Is used the Radar script from Dastardly banana from the wiki community and i changed the code a little bit for my needs. Basicly what is want is minimap with the following Player blib : is working Enemyblib : Is working
Missiontrigger blib : is not working got errors MissionObjective blib : I don't know how to do dat
The mission trigger blib is like GTA 4 and Red Dead Redemption with a name icon and stuff. Here are the errors from the script
Assets/Radar/Radar.js(113,44): BCE0017: The best overload for the method 'UnityEngine.GameObject.FindGameObjectsWithTag(Str ing)' is not compatible with the argument list '(UnityEngine.Texture)'.
And here is the code i'm using ;
@script ExecuteInEditMode() // radar! by PsychicParrot, adapted from a Blitz3d script found in the public domain online somewhere ..
//Modified by Dastardly Banana to add radar size configuration, different colors for enemies in different states (patrolling or chasing), ability to move radar to either one of 9 preset locations or to custom location.
//some lines are particular to our AI script, you will need to change "EnemyAINew" to the name of your AI script, and change "isChasing" to the boolean within that AI script that is true when the enemy is active/can see the player/is chasing the player.
var blip : Texture; // texture to use when the enemy isn't chasing var blipChasing : Texture; //When Chasing var radarBG : Texture; var MissionObjective : Texture; var MissionTrigger : Texture;
var centerObject : Transform; var mapScale = 0.3; var mapSizePercent = 15;
var checkAIscript : boolean = true; var enemyTag = "Enemy"; var Triggertag = "MissionTrigger";
enum radarLocationValues {topLeft, topCenter, topRight, middleLeft, middleCenter, middleRight, bottomLeft, bottomCenter, bottomRight, custom} var radarLocation : radarLocationValues = radarLocationValues.bottomLeft;
private var mapWidth : float; private var mapHeight : float; private var mapCenter : Vector2; var mapCenterCustom : Vector2;
function Start () { setMapLocation();
}
function OnGUI () { // GUI.matrix = Matrix4x4.TRS (Vector3.zero, Quaternion.identity, Vector3(Screen.width / 600.0, Screen.height / 450.0, 1));
// Draw player blip (centerObject) bX=centerObject.transform.position.x mapScale; bY=centerObject.transform.position.z mapScale;
GUI.DrawTexture(Rect(mapCenter.x - mapWidth/2,mapCenter.y-mapHeight/2,mapWidth,mapHeight),radarBG);
// Draw blips for Enemies DrawBlipsForEnemies();
//Draw Missiontrigger blibs DrawMissionTriggerBlibs();
}
function drawBlip(go,aTexture){
centerPos=centerObject.position; extPos=go.transform.position;
// first we need to get the distance of the enemy from the player dist=Vector3.Distance(centerPos,extPos);
dx=centerPos.x-extPos.x; // how far to the side of the player is the enemy? dz=centerPos.z-extPos.z; // how far in front or behind the player is the enemy?
// what's the angle to turn to face the enemy - compensating for the player's turning? deltay=Mathf.Atan2(dx,dz)*Mathf.Rad2Deg - 270 - centerObject.eulerAngles.y;
// just basic trigonometry to find the point x,y (enemy's location) given the angle deltay bX=dist*Mathf.Cos(deltay Mathf.Deg2Rad); bY=dist*Mathf.Sin(deltay Mathf.Deg2Rad);
bX=bX*mapScale; // scales down the x-coordinate so that the plot stays within our radar bY=bY*mapScale; // scales down the y-coordinate so that the plot stays within our radar
if(dist<=mapWidth*.5/mapScale){ // this is the diameter of our largest radar circle GUI.DrawTexture(Rect(mapCenter.x+bX,mapCenter.y+bY ,4,4),aTexture);
}
}
function DrawBlipsForEnemies(){ //You will need to replace isChasing with a variable from your AI script that is true when the enemy is chasing the player, or doing watever you want it to be doing when it is red on the radar.
//You will need to replace "EnemyAINew with the name of your AI script
// Find all game objects tagged Enemy var gos : GameObject[]; gos = GameObject.FindGameObjectsWithTag(enemyTag);
var distance = Mathf.Infinity; var position = transform.position;
// Iterate through them and call drawBlip function for (var go : GameObject in gos) { var blipChoice : Texture = blip; if(checkAIscript){ var aiScript : EnemyAI = go.GetComponent("EnemyAI"); if(aiScript.isChasing) blipChoice = blipChasing; } drawBlip(go,blipChoice); }
}
function DrawMissionTriggerBlibs(){ //You will need to replace isChasing with a variable from your AI script that is true when the enemy is chasing the player, or doing watever you want it to be doing when it is red on the radar.
//You will need to replace "EnemyAINew with the name of your AI script
// Find all game objects tagged MissionTrigger var gos : GameObject[]; gos = GameObject.FindGameObjectsWithTag(MissionTrigger);
var distance = Mathf.Infinity; var position = transform.position;
// Iterate through them and call drawBlip function for (var go : GameObject in gos) { var blipChoice : Texture = blib; if(checkAIscript){ var aiScript : EnemyAI = go.GetComponent("EnemyAI"); if(aiScript.isChasing) blipChoice = blipChasing; } drawBlip(go,blipChoice); }
}
function setMapLocation () { mapWidth = Screen.width*mapSizePercent/100.0; mapHeight = mapWidth;
//sets mapCenter based on enum selection if(radarLocation == radarLocationValues.topLeft){ mapCenter = Vector2(mapWidth/2, mapHeight/2); } else if(radarLocation == radarLocationValues.topCenter){ mapCenter = Vector2(Screen.width/2, mapHeight/2); } else if(radarLocation == radarLocationValues.topRight){ mapCenter = Vector2(Screen.width-mapWidth/2, mapHeight/2); } else if(radarLocation == radarLocationValues.middleLeft){ mapCenter = Vector2(mapWidth/2, Screen.height/2); } else if(radarLocation == radarLocationValues.middleCenter){ mapCenter = Vector2(Screen.width/2, Screen.height/2); } else if(radarLocation == radarLocationValues.middleRight){ mapCenter = Vector2(Screen.width-mapWidth/2, Screen.height/2); } else if(radarLocation == radarLocationValues.bottomLeft){ mapCenter = Vector2(mapWidth/2, Screen.height - mapHeight/2); } else if(radarLocation == radarLocationValues.bottomCenter){ mapCenter = Vector2(Screen.width/2, Screen.height - mapHeight/2); } else if(radarLocation == radarLocationValues.bottomRight){ mapCenter = Vector2(Screen.width-mapWidth/2, Screen.height - mapHeight/2); } else if(radarLocation == radarLocationValues.custom){ mapCenter = mapCenterCustom; }
}
Any help of how to do this is needed !
Next time, highlight all the code and push the 10101 button up top. Also, I recomend formatting it, I would but I'm in a lab right now. $$anonymous$$ore people'll answer.
Answer by Fervent · Apr 20, 2011 at 10:09 PM
FindGameObjectsWithTag takes a string
MissionTrigger is a Texture