小彬彬 发表于 2012-8-11 11:04

Unity3D简单的小地图代码


@script ExecuteInEditMode()

public var blip : Texture; //定義一個指針文件代表角色
public var radarBG : Texture; //地圖背景圖片,我直接用場景里我創建的render texture

public var centerObject : Transform; //選擇角色的物體的位置信息
public var mapScale = 0.3; //地圖縮放
public var mapCenter = Vector2(50,50); //地圖中心

function OnGUI () {

bX=centerObject.transform.position.x * mapScale;
bY=centerObject.transform.position.z * mapScale;
   
bX=centerObject.transform.position.x * mapScale;
bY=centerObject.transform.position.z * mapScale;
   
GUI.DrawTexture(Rect(mapCenter.x-32,mapCenter.y-32,64,64),radarBG);
// 上面的mapCenter.x-32是地圖的x位置,mapCenter.y-32是y位置,64,64是地圖的大小

DrawBlipsForEnemies();
}
function DrawBlipsForCows(){

var gos : GameObject[];
gos = GameObject.FindGameObjectsWithTag("Cow");

var distance = Mathf.Infinity;
var position = transform.position;

for (var go : GameObject in gos)   {

       drawBlip(go,blip);
}
}
function drawBlip(go,aTexture){

centerPos=centerObject.position;
extPos=go.transform.position;

dist=Vector3.Distance(centerPos,extPos);

dx=centerPos.x-extPos.x;
dz=centerPos.z-extPos.z;

deltay=Mathf.Atan2(dx,dz)*Mathf.Rad2Deg - 270 - centerObject.eulerAngles.y;

bX=dist*Mathf.Cos(deltay * Mathf.Deg2Rad);
bY=dist*Mathf.Sin(deltay * Mathf.Deg2Rad);

bX=bX*mapScale;
bY=bY*mapScale;

if(dist<=200){

   GUI.DrawTexture(Rect(mapCenter.x+bX,mapCenter.y+bY,2,2),aTexture);
}
}
function DrawBlipsForEnemies(){

var gos : GameObject&#91;&#93;;
gos = GameObject.FindGameObjectsWithTag("Enemy");

var distance = Mathf.Infinity;
var position = transform.position;

for (var go : GameObject in gos)   {

drawBlip(go,blip);
}
}
Enemy应该加到Enemy标签下。

      rendertexture 是可以被渲染到纹理。基于渲染效果,动态阴影,投射器,反射或检视相机。
可以加到camera的target texture来显示相机的拍摄内容。

weisen 发表于 2012-12-29 10:35

感谢分享!

qwer4650987 发表于 2013-10-30 10:00

小白对这里的算法不懂能介绍下吗

itheimo 发表于 2017-2-26 07:55

LZ真是人才

CML~小二郎 发表于 2017-2-26 08:27

很好哦

kaixinoii 发表于 2017-2-26 08:29

顶顶多好

sails 发表于 2017-2-26 08:34

好帖就是要顶

guduya 发表于 2017-2-26 08:35

真心顶

lmgeg874 发表于 2017-3-7 13:28

很不错

wk8981018 发表于 2017-3-7 13:31

很好哦
页: [1] 2 3 4 5 6 7 8 9 10
查看完整版本: Unity3D简单的小地图代码