找回密码
 立即注册
查看: 6454|回复: 92

[脚本] Unity3D简单的小地图代码

[复制链接]
发表于 2012-8-11 11:04 | 显示全部楼层 |阅读模式

  1. @script ExecuteInEditMode()

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

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

  7. function OnGUI () {

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

  16. DrawBlipsForEnemies();
  17. }
  18. function DrawBlipsForCows(){

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

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

  23. for (var go : GameObject in gos)   {

  24.        drawBlip(go,blip);
  25. }
  26. }
  27. function drawBlip(go,aTexture){

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

  30. dist=Vector3.Distance(centerPos,extPos);

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

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

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

  36. bX=bX*mapScale;
  37. bY=bY*mapScale;

  38. if(dist<=200){

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

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

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

  47. for (var go : GameObject in gos)   {

  48. drawBlip(go,blip);
  49. }
  50. }
复制代码
Enemy应该加到Enemy标签下。

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

评分

参与人数 1鲜花 +2 收起 理由
qwer4650987 + 2 赞一个!

查看全部评分

发表于 2012-12-29 10:35 | 显示全部楼层
感谢分享!
发表于 2013-10-30 10:00 | 显示全部楼层
小白对这里的算法不懂能介绍下吗
发表于 2017-2-26 07:55 | 显示全部楼层
LZ真是人才
发表于 2017-2-26 08:27 | 显示全部楼层
很好哦
发表于 2017-2-26 08:29 | 显示全部楼层
顶顶多好
发表于 2017-2-26 08:34 | 显示全部楼层
好帖就是要顶
发表于 2017-2-26 08:35 | 显示全部楼层
真心顶
发表于 2017-3-7 13:28 | 显示全部楼层
很不错
发表于 2017-3-7 13:31 | 显示全部楼层
很好哦
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-6-2 08:30 , Processed in 0.122578 second(s), 29 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表