【COCOS2DX-游戏开发之三三】TMX边界控制与小窗体内预览TMX
做一款像素游戏,须要确定地图的边界。保证人物的位置位于屏幕中央。到达地图左边界。地图位置不变。人向左走,到达右边界,地步位置不变,人向右走
如:地图左边。右边,上边空出的边界。还有下方留出操作button
这样的游戏普通情况下地图会大于窗体大小。人物要保持在屏幕(或窗体)中央。设置地图的位置。地图的位置应该是[win_size.width– Map_SpaceX
–map_size.width,left_space]。上下和左右原理同样
Map_SpaceX
地图左右留出空间普通情况下相等
Map_SpaceTop
地图上方空间
Map_SpaceBottom
地图下方空间(留出button大小)
Size map_size
地图大小
Size win_size
窗体大小(能够是一个view大小,也能够是窗体)
左边界:
右边界:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdGVuZ19vbnRoZXdheQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">
/**
* @brief adjustMapPos 调整地图的位置,保证人物在屏幕中央(左右边界特殊处理),人物在地图坐标系内
* @param map 地图节点
* @param map_origin_size 地图原始大小(没有缩放)
*/
void adjustMapPos(cocos2d::Node *map, const cocos2d::Size &map_origin_size)
{
// 外界我们能够将地图放大mViewScale倍, 效果等效于将视图窗体缩小mViewScale倍
cocos2d::Size win_size = mViewSize / mViewScale;
cocos2d::Size map_size = map_origin_size;
cocos2d::Point ptRole = mTargetPos; int MAP_SPACE_X = Configure::Map_SpaceX;
int MAP_SPACE_BOTTOM = Configure::Map_SpaceBottom;
int MAP_SPACE_TOP = Configure::Map_SpaceTop; float x = 0.f;
float y = 0.f;
if (map_size.width >= win_size.width - MAP_SPACE_X * 2) {
if (MAP_SPACE_X + ptRole.x <= win_size.width/2) {
x = MAP_SPACE_X;
} else if (map_size.width - ptRole.x + MAP_SPACE_X <= win_size.width/2 ) {
x = (win_size.width - MAP_SPACE_X) - map_size.width;
} else {
x = win_size.width/2 - ptRole.x ;
}
} else {
x = (win_size.width - map_size.width)/2;
} if (map_size.height >= win_size.height - MAP_SPACE_TOP - MAP_SPACE_BOTTOM) {
if (ptRole.y + MAP_SPACE_BOTTOM <= win_size.height/2) {
y = MAP_SPACE_BOTTOM;
} else if (map_size.height - ptRole.y + MAP_SPACE_TOP <= win_size.height/2) {
y = win_size.height - MAP_SPACE_TOP - map_size.height;
} else {
y = win_size.height/2 - (ptRole.y);
}
} else {
y = MAP_SPACE_BOTTOM;
} map->setPosition(x, y );
}
这样的依据地图放大比例来缩小视图比例的做法能够保证在一个控件窗体内预览一个场景
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdGVuZ19vbnRoZXdheQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">
【COCOS2DX-游戏开发之三三】TMX边界控制与小窗体内预览TMX的更多相关文章
- cocos2d-x游戏开发实战原创视频讲座系列1之2048游戏开发
cocos2d-x游戏开发实战原创视频讲座系列1之2048游戏开发 的产生 视持续更新中.... 视频存放地址例如以下:http://ipd.pps.tv/user/1058663622 ...
- Cocos2dx游戏开发系列笔记13:一个横版拳击游戏Demo完结篇
懒骨头(http://blog.csdn.net/iamlazybone QQ:124774397 ) 写下这些东西的同时 旁边放了两部电影 周星驰的<还魂夜> 甄子丹的<特殊身份& ...
- cocos2d-x游戏开发系列教程-前言
cocos2d-x游戏开发前景: 最近企业对于Cocos2D-X开发人才的用人需求很大,而且所提供的薪资相当可观. 为满足广大向往游戏开发行业同学的需求,特推出适合新手的Cocos2D-X手游开发教程 ...
- cocos2d-x 游戏开发之有限状态机(FSM) (四)
cocos2d-x 游戏开发之有限状态机(FSM) (四) 虽然我们了解了FSM,并且可以写自己的FSM,但是有更好的工具帮我们完成这个繁琐的工作.SMC(http://smc.sourceforge ...
- cocos2d-x 游戏开发之有限状态机(FSM) (三)
cocos2d-x 游戏开发之有限状态机(FSM) (三) 有限状态机简称FSM,现在我们创建一个专门的FSM类,负责管理对象(Monkey)的状态.然后Monkey类就实现了行为与状态分离.Monk ...
- cocos2d-x 游戏开发之有限状态机(FSM) (一)
cocos2d-x 游戏开发之有限状态机(FSM) (一) 参考:http://blog.csdn.net/mgphuang/article/details/5845252<Cocos2d-x游 ...
- cocos2d-x 游戏开发之有限状态机(FSM) (二)
cocos2d-x 游戏开发之有限状态机(FSM) (二) 1 状态模式
- 《Cocos2d-x游戏开发实战精解》学习笔记4--实战一个简单的钢琴
上一节学习了使用Cocos2d-x播放音乐的方法,但是那种方法一般只适合于播放较大的音乐,而一般比较短小的音乐(如游戏中的打斗.按键音效等)则要通过playEffect来播放.本节使用该方法以及之前学 ...
- 《Cocos2d-x游戏开发实战精解》学习笔记3--在Cocos2d-x中播放声音
<Cocos2d-x游戏开发实战精解>学习笔记1--在Cocos2d中显示图像 <Cocos2d-x游戏开发实战精解>学习笔记2--在Cocos2d-x中显示一行文字 之前的内 ...
随机推荐
- Android --Vibrator--震动服务
1.取得震动服务的句柄 vibrator = (Vibrator) getSystemService(VIBRATOR_SERVICE);或者vibrator = (Vibrator)getAppli ...
- SecureCRT辅助解决方案
SecureCRT辅助解决方案 1. 下载SecureCRT 7.3版本并激活: 2. SecureCRT linux配色方案: 3. SecureCRT设置log保存方案: 1. secureCRT ...
- MySQL新建用户,授权,删除用户,修改密码等命令
首先要声明一下:一般情况下,修改MySQL密码,授权,是需要有mysql里的root权限的. 注:本操作是在WIN命令提示符下,phpMyAdmin同样适用. 用户:phplamp 用户数 ...
- 数据绑定以及Container.DataItem几种方式与使用方法分析
灵活的运用数据绑定操作 绑定到简单属性:<%#UserName%> 绑定到集合:<asp:ListBox id="ListBox1" ...
- 超详细SDK Hello World
Windows应用程序的基本运行机制与HelloWin程序详细解 总的来说最基本的Windows应用程序的运行执行顺序总是以如下的基本顺序执行的. 顺序结构: 调用WinMain函数开始执行--à定义 ...
- ubuntu 安装LaTex
使用IDE来使用tex,如TexMaker. 1.到http://www.tug.org/texlive/acquire-netinstall.html 下载texlive. 2.linux下命令行, ...
- 第二代map-reduce架构YARN解析
需求 我们在考虑hadoop map-reduce框架的时候,最重要需包括: 1. reliability 可靠性,主要是jobtracker,resource manager可靠性 2. avail ...
- POI读入excel文件到Java中
package Poi_Test; //导入java自带的包 import java.io.BufferedInputStream; import java.io.File; import java. ...
- 2014/08/24——升级stepbystep修复tc不刷新问题并加入杭电bc
问题: 自从tc站点升级以后做题统计的tc一栏就不刷新了,为此全哥也更新了一下stepbystep的配置文件什么的,我仅仅要将其挂到server上即可了. 由于加了杭电的bc,看来这事儿不easy.还 ...
- Mac&iOS Socket
链接地址:http://geeklu.com/2012/01/macios-socket/ Geeklu 登录 1 Recommend 7 分享 按评分高低排序 加入讨论... 振 ...