怎么在指定位置画一个小地图

怎么实现游戏中的小地图。arpg的小地图求大神指教

1赞

你会实现大地图吗?把大地图缩小放右上角就可以了。

1赞

用一个摄像机,使用那个什么renertarget渲染到纹理,然后放在屏幕上就行。
摄像机可以设置mask,然后再每个单位上挂一个用于小地图显示的图标之类的。把这个图标的mask和摄像机设置成相同的。

1赞

具体怎么实现呢 教教我大神。我的qq312449401

function GameCamera:InitMiniMapCamera(layer3D)
    if self.m_miniMapCamera == nil then
      self.m_miniMapCamera = cc.Camera:createOrthographic(GameCamera.MiniMapCameraSize,GameCamera.MiniMapCameraSize,1,10000)
      self.m_miniMapCamera:setCameraFlag(cc.CameraFlag.USER2)
      self.m_miniMapCamera:setPosition3D(GameCamera.MiniMapDistance)
      self.m_miniMapCamera:setRotation3D(cc.vec3(-90, 180, 0))
      layer3D:addChild(self.m_miniMapCamera, 2)
    end

    local fbo = ccexp.FrameBuffer:create(1, GameCamera.MiniMapSize, GameCamera.MiniMapSize);
    local rt = ccexp.RenderTarget:create(GameCamera.MiniMapSize, GameCamera.MiniMapSize);
    fbo:attachRenderTarget(rt);
    self.m_miniMapCamera:setFrameBufferObject(fbo);
    self.m_miniMapFbo = fbo
end

function GameCamera:GetMiniMap()
  if self.m_miniMapFbo ~= nil then
    return self.m_miniMapFbo:getRenderTarget():getTexture()
  end
  return nil
end

以上是创建小地图的纹理,下面就是小地图的ui显示

  local miniMap = worldCamera:GetMiniMap()
  if miniMap ~= nil then
    self.m_SpriteMiniMap:setTexture(miniMap)
    self.m_SpriteMiniMap:setTextureRect(cc.size(200,200))
    self.m_SpriteMiniMap:setVisible(true)
  end

然后是需要显示在小地图的精灵

sprite:setCameraMask(cc.CameraFlag.USER2)

代码大概就这样,有一些变量 是在其他地方定义的,对整体实现影响不大,相信你能搞定。

1赞

对了。。 我这个是cocos2d-lua的实现。
所以只能是提供个思路。

感谢大神

creator能做到吗?

??????????