战争迷雾3

2024-01-31 06:10
文章标签 战争 迷雾

本文主要是介绍战争迷雾3,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

转载请注明,原文地址:http://www.benmutou.com/blog/archives/482

 

正文:

1. 什么是瓦片的坐标

这么说吧,前一个小节我们创建了一张10×10TMX地图,我们所说的瓦片格子的位置,就是指这100个格子里的位置,瓦片格子的位置用二维上的一个点来表示。

(小若:喂,还是不懂!)

最后,看下图,大家一定就懂了:

 

比如,左上角的瓦片格子的坐标就是(0, 0)

(小若:噗!你早点放图片嘛)

 

2. 进入正题

好了,开始编码吧!

我们要修改HelloWorldScene.cppccTouchBegan函数:

[cpp] view plain copy print ?
  1. bool HelloWorld::ccTouchBegan( CCTouch *pTouch, CCEvent *pEvent )   
  2. {  
  3.    
  4. CCPoint tiledMapPos = getMapTiledPos(  
  5.    
  6. cloudMap,  
  7.    
  8. CCDirector::sharedDirector()->convertToGL(pTouch->getLocationInView()));  
  9.    
  10. CCLOG("TiledMapPos x = %d, y = %d", tiledMapPos.x, tiledMapPos.y);  
  11.    
  12. return true;  
  13.    
  14. }  


 

convertToGL函数是为了把屏幕点击坐标转换为Cocos2d-x的坐标系。

(小若:我知道,屏幕点击坐标是以左上角为原点的,而Cocos2d-x是笛卡尔坐标系,是以左下角为原点的。)

 

旁白出乎意料的聪明了一次。然后通过getMapTiledPos函数即可将点击坐标转换为瓦片坐标。很简单,不解释了。

(小若:什么啊,getMapTiledPos是怎么回事?你不打算解释了?)

 

为了奖励旁白聪明了一次,我就破例讲解一下吧。我们来看看这个函数:

[cpp] view plain copy print ?
  1. cocos2d::CCPoint HelloWorld::getMapTiledPos( CCTMXTiledMap* map, CCPoint pos ){  
  2.    
  3. CCSize mapSize = map->getMapSize();  
  4.    
  5. CCSize tiledSize = map->getTileSize();  
  6.    
  7. int iMapHeight = mapSize.height * tiledSize.height;  
  8.    
  9. /* pos为笛卡尔坐标系的坐标,所以y轴需要修正 */  
  10.    
  11. int x = pos.x / tiledSize.width;  
  12.    
  13. int y = (iMapHeight - pos.y) / tiledSize.height;  
  14.    
  15. return CCPointMake(x, y);  
  16.    
  17. }  

其实这是一个简单数学计算,xy坐标就相当于长度,瓦片格子大小就相当于单位大小,长度除以单位大小,就得到了数量,这个数量就是我们要的瓦片坐标。

(小若:喂,那y坐标又是怎么一回事?)

 

关于y坐标,我做了一个特殊处理,因为参数pos是在笛卡尔坐标系下的坐标,而瓦片地图是以左上角为原点的(前面那张图片,还记得吗?),所以要先把pos.y转换一下,通常转换坐标是用屏幕高减去y,但因为瓦片地图有可能比屏幕大,所以在这里要用瓦片地图的高。

(小若:其实我早就懂了,我刚刚只是不想懂而已!)

 

我们用调式模式运行项目,然后点击屏幕就会看到以下输出:

 

我在屏幕上点击了3次,打印了3条日志:

TiledMapPos x = 0, y = 1072693248

TiledMapPos x = 0, y = 1073741824

TiledMapPos x = 0, y = 1072693248

OK,一切正常。

(小若:啊,才怪啊!X0就算了,这y的天文数字又是怎么回事?)

 

是的,我故意的,我们来看看打印日志的代码:

CCLOG("TiledMapPos x = %d, y = %d", tiledMapPos.x, tiledMapPos.y);

 

这里有一个很有趣的地方要注意,那就是,CCPointxy属性是float类型的,所以不能用整型的格式输出。我们试试把调试代码改为这样:

CCLOG("TiledMapPos x = %f, y = %f", tiledMapPos.x, tiledMapPos.y);

 

我把%d换成了%f。我们来继续用调试模式运行项目,然后随意点击屏幕,将看到以下输出:

TiledMapPos x = 0.000000, y = 8.000000

TiledMapPos x = 0.000000, y = 7.000000

TiledMapPos x = 1.000000, y = 9.000000

TiledMapPos x = 3.000000, y = 9.000000

这次真的正常了。大家可以自行测试。

(小若:为什么我点击左上角,但是输出的不是(0, 0)?)

 

对了,TMX地图绘制到屏幕上时,也是遵守笛卡尔坐标系的,图绘制到屏幕时,地图的左下角和屏幕的左下角是对齐的,所以,当地图比屏幕大时,地图的(0, 0)坐标是在屏幕的上方并且是看不见的。

好了,铺垫差不多完成了,下一节我们将正式开始编写战争迷雾效果。

(小若:终于等到了,你好唠叨!)

这篇关于战争迷雾3的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/662794

相关文章

坚鹏讲人才第15期:冲破数字化迷雾——数字化人才速成攻略

数字化浪潮来袭,您还在迷雾中徘徊吗?别担心,我们为您带来《冲破数字化迷雾:数字化人才速成攻略》!我们将带您冲破迷雾,领略数字化的无限魅力!让您快速掌握数字化技能,成为职场新宠!别再犹豫,赶紧行动,开启您的数字化之旅! 本文将从5个方面为您提供一些实用的建议,帮助您快速成为一名数字化人才,提升自己的职业竞争力。 第一、明确数字化人才标准和要求 您需要了解数字化人才的标准和要求,这包括数字化

迷雾大陆攻略:VMOS云手机流派辅助和技能加持助力!

在《迷雾大陆》这款游戏中,选择一个合适的流派和技能加点至关重要。使用VMOS云手机,玩家可以享受到专属定制的云手机,内置游戏安装包,无需重新下载安装游戏。同时,VMOS云手机能够24小时不间断运行,自动完成游戏中的各项任务。更值得一提的是,VMOS云手机支持无限多开,支持安卓、iOS、PC、网页端多端互通,即使是低配手机也能流畅运行《迷雾大陆》,为玩家带来极致的游戏体验。 一、最强流派推

游戏中的战争迷雾

转自: http://blog.csdn.net/xoyojank/article/details/12259161 说到战争迷雾(Fog of War, FOW), 其实还是非常普遍的一项技术, 在RPG, RTS等游戏中得到了广泛的应用  但是关于这方面的资料非常少, 经常会有人问怎么做, 所以就有了写这篇文章的想法 从应用上来说, 有两种: 探索范围: 通常

迷雾大陆辅助:VMOS云手机助力升级装备系统秘籍!

在《迷雾大陆》的广阔世界中,装备的选择和获取对于每一位冒险者来说都是至关重要的。为了让玩家能够更轻松地管理装备并在冒险中获得更高的效率,VMOS云手机提供了专属定制版云手机,内置游戏安装包,不需要重新下载安装游戏。VMOS云手机不仅能辅助游戏,实现24小时云端自动运行,还支持无限多开,极大地解放了玩家的双手。此外,VMOS云手机支持安卓、iOS、PC、网页端多端互通,即使是低配手机,也能畅

迷雾大陆辅助:VMOS云手机助力新手入门!玩法机制大全!

在《迷雾大陆》的神秘世界中,玩家们总是面临着层层挑战,而使用VMOS云手机能够极大地提升你的游戏体验。VMOS云手机专门为《迷雾大陆》打造了定制版云手机,内置游戏安装包,玩家无需重新下载安装,直接畅玩。此外,VMOS云手机支持24小时云端运行,帮助你轻松完成日常任务和活动,解放双手。更令人惊喜的是,VMOS云手机还能实现无限多开,无论你是想同时操作多个账号,还是在不同设备上无缝衔接,VMO

迷雾大陆游戏攻略:VMOS云手机辅助攻略,新手必备!

在迷雾大陆这款策略性极强的游戏中,玩家需要应对多变的战场环境、复杂的敌军配置以及资源的合理分配。而为了让玩家能够更加从容地迎接这些挑战,VMOS云手机提供了一款专属定制版的迷雾大陆云手机。这个云手机内置了游戏安装包,玩家不需要再次下载安装游戏,即刻即可进入战斗。同时,VMOS云手机具备24小时不间断的云端运行能力,即使在玩家无法亲自操作时,云手机也能继续运行游戏,保持资源积累与战斗进度。此外,VM

日日AIGC:战争与和平-多图预警

每天一画,AI艺术之旅! 画家们,你们是否曾梦想过用AI进行创作呢?我最近可是痴迷于此,无法自拔哦!每天,我在画布上探索新的艺术领域,用AI激发我的无限创作潜能。 虽然AI不能完全取代人类的艺术家之魂,但它的确为我们的创作带来了全新的视角和风格!通过调整各种参数和算法,AI可以轻松模仿各种艺术风格,从抽象派到现实主义,从印象派到超现实主义。 今天,我想和大家分享我用AI创作的画作。每一张都是

地图之战争迷雾/地图算法/自动导航(一)

战争迷雾 TiledMap 创建黑色覆盖块,然后使用碰撞组件,控制黑色块的显示和隐藏 地图算法 在有些游戏中,地图需要随机生成,比如游戏中的迷宫等,这就需要地图生成的算法;在角色扮演类游戏中,角色需要在地图中找到一条合适的路径,这就需要寻路算法,最常用的寻路算法就是A星路径搜索算法 Roguelike算法(地图生成) Roguelike是角色扮演游戏(RPG)的一个子类(Roguelik

LLM输出格式化后的世界战争事件

LLM输出格式化后的世界战争事件 提示词:代码修改点:输出: 希望LLM输出格式化后的世界战争事件 代码参考: 通过LLM多轮对话生成单元测试用例 提示词: system_prompt="你是一位历史学家,擅长回答历史问题,请使用中文回答。\n\n历史问题:"question ='''输出从{}年到{}年期间,全世界发生过的战争,必须按以下固定格式输出:输出格式:[开

九阳股份的“而立危机”:业绩三连降,押注清洁赛道迷雾重重?

“致敬伟大的小问题”,这是步入而立之年的九阳股份(SZ:002242,下同“九阳”)新品发布会的主题,也是九阳过去30年发展历程的缩影。 在经历“宅经济”催生的流量井喷期后,厨房小家电市场受困于热度退潮的浅滩,光环渐弱的九阳股份已连续三年出现业绩下滑。九阳致力于探寻更为多元的业务切面,但目前业绩第二增长曲线尚未形成,拓张的消耗反而成为了掣肘。 成功发掘逆势回暖的内生性动能,借此在激烈的市