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 ...
随机推荐
- 设计一个程序能够将某一个目录下面的所有文件名打印出来---File类的使用
,设计一个程序能够将某一个目录下面的所有文件名打印出来 运用到的方法有:返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中的文件和目录:list() 测试此抽象路径名表示的 ...
- Andrew Ng机器学习课程笔记--week11(图像识别&总结划重点)
一.内容概要 Photo OCR Problem Decription and pipeline(问题描述和流程图) Sliding Windows(滑动窗口) Getting Lots of Dat ...
- SkipList跳表基本原理
为什么选择跳表 目前经常使用的平衡数据结构有:B树,红黑树,AVL树,Splay Tree, Treep等. 想象一下,给你一张草稿纸,一只笔,一个编辑器,你能立即实现一颗红黑树,或者AVL树 出来吗 ...
- JSP慕课网阶段用户登录小例子(不用数据库)
getAttribute和setAttribute一起使用,而getParameter用于取得如request传来的参数. Web是请求/响应架构的使用,而request和response就是在服务器 ...
- java8新特性,使用流遍历集合
在这篇“Java 8新特性教程”系列文章中,我们会深入解释,并通过代码来展示,如何通过流来遍历集合,如何从集合和数组来创建流,以及怎么聚合流的值. 在之前的文章“遍历.过滤.处理集合及使用Lambda ...
- 通过日期在js中求出判断间隔天数,周期等实现分享
在我们在项目的时候,可能出现这样的一种情况,有一个开始时间和一个结束时间,而这两个时间用$('#StartTime').val(); 取出来的时候又是datetime 类型,我们需要求这个时间中的间隔 ...
- Mysql中使用聚合函数对null值的处理
平时因为对于数据库研习的不深,所以在面试的时候问了一些平常遇到过的问题居然没法很肯定地回答出来,实在让自己很恼怒! 这次让我记忆深刻的一个问题是: 在mysql中使用聚合函数的时候比如avg(t),t ...
- 通过createObjectURL实现图片预览
实现原理:通过createObjectURL 创建一个临时指向某地址的二进制对象. 过程:点击触发隐藏的 input file 的点击事件,使用createObjectURL读取 file,创建 ...
- Ubuntu下安装NVIDIA显卡驱动的教训
今天在ubuntu16.04版本下安装了NVIDIA的显卡驱动,真的是一波十六折: 首先是在英伟达的官网上查找你自己电脑的显卡型号然后下载相应的驱动. 网址:http://www.nvidia.cn/ ...
- JS自定义对象以及相关成绩系统完整案例演示
[自定义对象] 1.基本概念 ①对象是拥有一系列无无序属性和方法的集合 ②键值对:对象中的数据,用以键值对的形式存在,对象的每个属性和方法,都对应一个键值,以键取值 ③属性:描述对象特征的一系列变量称 ...