PuTsangTo-单撸游戏开发02 测试场景与单轴移动
且不说立项与设计阶段的工作量,一个完整的游戏在开发阶段设计的职责范围也是很广,还有个大问题就是PuTsangTo项目也是本人在边学边做,截止目前还是满满的无从下手的感觉,一方面是技能与经验不足,另一方面就是要做的事情实在很多,虽然大致有哪些多少都有点数,但从感觉从那一部分先做都不太爽。
静下心来思考所有的工作,要做的主要有这么几点:
1. 美术资源。具体到2d游戏那就是贴图资源,动画切片资源,还有就是骨骼动画之类的。不是学美术出身,所以决定这方面一切从简,直到游戏初型基本呈现,再贴上酷炫的图也不迟,前期就无脑用彩色方块代替好了。
2. 音乐资源。比美术资源还没头绪,同样前期就建立一个无声游戏世界,最多给加上简单碰撞音效,其他的等后面再把电音世界大门给敲开。
3. 场景搭建。这个必须要最先完成,毕竟是游戏世界的基础,至少先从测试场景开始。
4. 游戏脚本。这是客户端唯一需要编程的地方了,得配合场景搭建过程一起完成,并尽量为后期的数据分离维护铺好路。
5. 数据分离。最终的目标是要实现联网游戏的,在前期就得多考虑这个问题。
测试场景搭建
Cocos官方对编写代码以外的工作的教程及资源的提供还是很完备的。基本场景的编写看完教程就会了,说白也就是拖Actor到场景里面,给他加上各种组件,配置各种属性,毫无难度也没什么意思,美感完全靠的贴图。笔者这里靠自己一个周末速成的PS伎俩抠了几张贴图,搭出了个超级简单的场景出来:

层级结构是这样的:

可以直接运行,效果就是我们的小白安静的静止在场景里,下一步就先让小白能动起来,并且是最最简单的移动,简单到只能横向单轴移动。
移动需要脚本,所以编写一个脚本move.js,做的事情有下面5件:
1. 在properties里添加一个speed变量代表速度。
2. 在onLoad回调中配置按键监听,监听键盘按键的按下与松开两个事件。并初始化一个direction变量代表方向,值为-1则是向左移动,为1则向右移动,为0则静止。
3. 在监听键盘按下事件的回调中监听键盘的AD键和左右方向键。其中A与左方向键将设置direction变量为-1,D与右方向键将设置direction变量为1。
4. 键盘松开的回调中要做的就是停止移动,最简单的方式就是将AD左右按键送开始都将direction值设为0。
不过仅这么做体验是不够好的,因为按键顺序的情况有三种: A按下A松开B按下B松开、A按下B按下A松开B松开、A按下B按下B松开A松开。
其中第二种情况会发生在左右键快速更换时,左键还未松开,右键就按下了,此时左键如果再松开,前面右键按下时设置的1会有一瞬间被置回0,移动就会卡顿一瞬间。说得可能不太明白,不过实际操作时,左右键交替按,是比较容易有卡顿的感觉的,除非一直保证A按键松开后再按下B按键。
优化的办法就是在按键松开的回调中进行判断,当前的direction的值若与松开的按键匹配则将其置0,否则说明已经有其他按键来支配当前的direction了,什么都不做就可以。
5. 以上按键的监听其实都是围着着一个值在转——direction,但cocos并不认识这个值,所以还得在其提供的update更新回调中使用direction真正的让角色移动。
update回调传入了一个很短的时间值,将其与speed值以及direction值相乘并累加到节点当前的x周位置上,就成功改变节点的位置了。
脚本源码如下:
move.js最终效果即是可以流畅灵活的左右移动。由于笔者玩过比较多的一个叫《冒险岛》的游戏,其移动就是横向不考虑重力与惯性,纵向跳跃才考虑这些,让笔者比较习惯这种操作方式,而不是像超级玛丽那样,横向走个路还刹不住车。所以PuTsangTo的前半段会模仿很多《冒险岛》的玩法元素,这多少也帮助我知道如何下手了。
同时由于笔者主页是做Web开发,一边不务正业写游戏过程中,也会认真把这个游戏的官网啊乱七八糟的给构建出来,但下一步还是先把角色的基本动作,包括任何游戏都必须要有的一些能力给完善好。下一期就把角色跳跃包括平台的碰撞给完成好了。
PuTsangTo-单撸游戏开发02 测试场景与单轴移动的更多相关文章
- PuTsangTo-单撸游戏开发01 Flag与计划
先立下flag,至少1年之内坚持并2年之内完成自己的一个梦想--游戏开发. 没有参加培训也不打算参加培训,就纯靠业余时间自学并用自己的思路完成一整套游戏体系.做出此决心时也已经做好准备烂尾了,但是有种 ...
- PuTsangTo-单撸游戏开发03 碰撞与跳跃瑕疵版
继续上一部分,游戏的定位是横版平台动作类游戏,所以得有跳跃动作,首先想到的就是物理引擎,不过在2D游戏里,仅为了角色的跳跃而引入物理引擎,目前想来有些不至于,仅使用cocos默认带有的碰撞系统也足够了 ...
- cocos2dx 游戏开发中常用场景切换方式以及特性
runWithScene(CCScene* scene):启动游戏,并运行scene 场景.这个方法在主程序启动时第一次启动主场景时调用. replaceScene(CCScene* scene) ...
- [Unity3D]Unity3D游戏开发3D选择场景中的对象,并显示轮廓效果强化版
大家好,我是秦培,欢迎关注我的博客,我的博客地址blog.csdn.net/qinyuanpei. 在上一篇文章中,我们通过自己定义着色器实现了一个简单的在3D游戏中选取.显示物体轮廓的实例. 在文章 ...
- PuTsangTo-单撸游戏开发04 给角色添加基本动画
一. 跳跃与移动的优化与完善 先给上一次的内容做一次补救,也就是上一次中还留存的,由于键盘按键事件的第一次回调与后续回调之间会间隔个小半秒带来的跳跃落地后动作延迟的情况. 最终的键盘按下回调的处理代码 ...
- 《Lua游戏开发实践指南》读后感
书籍地址:http://book.douban.com/subject/20392269/ 一句话点评该书:想用Lua作游戏脚本开发的同学值得一读! (一)本书特点 市面专门讲Lua的中文书籍非常少, ...
- 【Cocos2d-X游戏实战开发】捕鱼达人之单例对象的设计(二)
本系列学习教程使用的是cocos2d-x-2.1.4(最新版为cocos2d-x-2.1.5) 博主发现前两个系列的学习教程被严重抄袭,在这里呼吁大家请尊重开发者的劳动成果, 转载的时候请务必注 ...
- 喵的Unity游戏开发之路 - 多场景:场景加载
如果丢失格式.图片或视频,请查看原文:https://mp.weixin.qq.com/s/RDVMg6l41uc2IHBsscc0cQ 很多童鞋没有系统的Unity3D游戏开发基础,也不知道从何开始 ...
- Android游戏开发实践(1)之NDK与JNI开发02
Android游戏开发实践(1)之NDK与JNI开发02 承接上篇Android游戏开发实践(1)之NDK与JNI开发01分享完JNI的基础和简要开发流程之后,再来分享下在Android环境下的JNI ...
随机推荐
- Spring MVC控制层传递对象后在JSP页面中的取值方法
List<Order> orders = new ArrayList<Order>(); for (int i = 0; i < 3; i++) { Order t = ...
- java多线程知识点概述
这里只起一个概述的作用,极其简单的列一下知识点,需要在脑海中过一下,如果哪些方面不熟悉的话,建议利用网络资源去学习. 1.线程.进程概念 概念 线程状态及其转换 2.死锁.预防.解决 3.jdk线程实 ...
- MVC导入命名空间
为什么要导入 一次性导入,避免每个页面都要导入,代码看起来更为清晰,不再带一个长长的命名空间,视图里面可以直接写类名了. 导入方法 在Views文件夹的web.config的namespaces里面配 ...
- 【Linux相识相知】yum的配置使用和程序包的编译安装
在上一篇博客中,写到了如何使用rpm命令来安装.卸载软件等,但是大家都知道,各个软件包之间可能存在依赖关系,如果安装某个软件需要额外的依赖其他若干的包,那么我们就需要将其他额外的包一个一个的安装上去, ...
- startsWith和endWith方法
startsWith(): 例如:if(a.startsWith(b)) //判断字符串a 是不是以字符串b开头. 语法1 public boolean startsWith(String prefi ...
- Linux-insmod/rmmod/lsmod驱动模块相关命令(10)
insmod:加载模块 参数: -f 不检查目前kernel版本与模块编译时的kernel版本是否一致,强制将模块载入.-k 将模块设置为自动卸除.-m 输出模块的载入信息.-o <模块名称 ...
- poj 1986LCA离线dfs+并查集
题意,给出边和权值,求出两个点间的最短距离. 用离线算法的时候有个地方不知道怎么处理了.在线的本来想用倍增的,但发现倍增算法貌似需要预处理深度而不是权值,不知道怎么处理.套一个rmq的模板吧,用来处理 ...
- CSS3动画效果之transition
CSS3中有两种方式实现动画,transition和animation+@keyframe. 两者的作用机制不一样:transition定义在可能要进行动画的元素上,对某些CSS属性进行监听,一旦CS ...
- 201521123091 《Java程序设计》第11周学习总结
Java 第十一周总结 第十一周的作业. 目录 1.本章学习总结 2.Java Q&A 3.码云上代码提交记录及PTA实验总结 4.课后阅读 1.本章学习总结 1.1 以你喜欢的方式(思维导图 ...
- 结对编程1---基于Flask的四则运算题目生成器
项目代码地址 / WEB应用地址 / 合作伙伴iFurySt博文链接 需求分析 本次程序是基于原有的控制台四则运算器的基础上,改成WEB的形式,同时还增加了一些新的功能.同时因为交互方式的改变,代码也 ...