【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中显示一行文字 之前的内 ...
随机推荐
- Office 2010 垃圾邮件过滤设置
垃圾邮件过滤设置 有同事反馈给我,某些时候应该收到的邮件,却到了垃圾邮件里,给工作带来了不便,下面简单介绍一下outlook 2010 有关垃圾邮件的过滤设置. 1: 找到相关的邮件,点右键,在”垃圾 ...
- UItableViewCell上的button点击无响应的办法
由于IOS7中添加了滑动后出现编辑按钮的操作,所以使用scrollView来处理,UITableViewCellScrollView有对触摸的相应处理,导致按钮的点击效果被屏蔽了,但是点击事件还是在的 ...
- [转]VMware 出现下述错误: Application failure. hr=0x80040101:Failed to initialize virtual machine.
VMware 出现下述错误:Application failure. hr=0x80040101:Failed to initialize virtual machine. 解决方法:1.重新注册这三 ...
- 转:携程App的网络性能优化实践
http://kb.cnblogs.com/page/519824/ 携程App的网络性能优化实践 受益匪浅的一篇文章,让我知道网络交互并不是简单的传输和接受数据.真正的难点在于后面的性能优化 下面对 ...
- 【剑指offer】字符串转整数
转载请注明出处:http://blog.csdn.net/ns_code/article/details/28015693 题目描写叙述: 将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函 ...
- android开发1:安卓开发环境搭建(eclipse+jdk+sdk)
计划折腾折腾安卓开发了,从0开始的确很痛苦,不过相信上手应该也不会太慢.哈哈 一.Android简介 Android 是基于Linux内核的软件平台和操作系统. Android构架主要由3部分组成,l ...
- 关于caffe-windows中 compute_image_mean.exe出现的问题
这两天有兴致装了下caffe.感受下这个框架. 可是在这个过程中遇到非常多问题.我把碰到的问题和解决方式写下,便于后人高速上手. compute_image_mean.exe 编译出来后.运行数据变换 ...
- C# - 接口的继承
代码: using System; using System.Collections.Generic; using System.Linq; using System.Text; using Syst ...
- boost uuid
uuid: uuid库是一个小的使用工具,可以表示和生成UUID UUID是University Unique Identifier的缩写,它是一个128位的数字(16字节),不需要有一个中央认证机构 ...
- 小W与网格
lucas定理 http://www.cnblogs.com/vongang/archive/2012/12/02/2798138.html 题目:http://hihocoder.com/conte ...