Unity中制作小地图

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_33574890/article/details/84073369

思路

  • 我制作的小地图是以主角的位置为中心点来进行判断的。而不是整个区域的地图
  1. 在主角身上建立一个半径为5的sphere 触发器,当有物体进入的时候就在背景Image下创建对应图标
  2. 判断其与主角的位置偏差,并进行转换。3D空间的xz偏差等于UI空间下的xy偏差。并注意是target.position - player.position
 Vector3 pos =  (target.position - player.position) * 166 /5 //166是UI地图的半径
 icon.transform.localPosition = new Vector3(pos.x -166, pos.z - 166, 0); // 进行坐标转换 以中心点为坐标
  1. 当物体移动出去主角的范围时就销毁图标,当物体死亡时,也销毁图标
  2. 主角图标的朝向
    • 主角沿着Y轴的旋转度数就等于其图标沿着z轴的旋转
    • Vector3 rotateAngle = new Vector3( 0, 0, - transform.eulerAngles.y)

疑惑

  • 我设置的图标的描点为中心定位,计算出来pos后,应该就直接是其图标的xy坐标,为什么还要进行坐标转换呢
  • 因为我的mapICon用描点定位的时候,设置其中心点为Pivot(1,1)右上角,所以导致怪物的图标全部聚拢在右上角。因此
icon.transform.localPosition = new Vector3(pos.x -166, pos.z - 166, 0);
// 因此如果你的mapICon本身的中心点就是(0.5,0.5),就不用减去166,及其图标的半径

猜你喜欢

转载自blog.csdn.net/qq_33574890/article/details/84073369
今日推荐