挖坑,慢慢填的事情, 我最喜欢做了 😀

滑动鼠标查看效果

之前一直想做这个效果的,但是一直没空研究的说。 最近 SParticle 更新了,增加了 Heat 和 Phantom. 后者效果不说了,残影的一贯做法。 正好这套工具 + Away3D 都是开源的,想看看做法,结果 Heat 貌似是 Sparticle 独有, Away3D 里看不到这个效果,索性自己实现, 发现这个并不难。

一共5个步骤
1.对背景进行一次 RenderToTexture, 如果背景有动态物体,则需要每帧 RTT
2.绘制刀光,水波,粒子等几何体顶点,随意
3.使用 RTT纹理 对几何体进行贴图,可以和原贴图 mul 或者 add
4.根据几何体坐标,算出几何体在在 RTT 纹理中的全局坐标,并计算在 RTT 纹理中的全局 uv
5.根据全局uv 对 RTT纹理 进行采样

最近无聊把一堆东西移植到这个2D框架上, 这次是条带效果~~ 条带代码来自 ?@朝朝姐夫 做了些修改

和之前模型一样,还是已扩展类的形式存在,并且可以参与Starling的深度排序,坐标定位,缩放等

效果预览,移动鼠标即可

首先创建一个名为 RibbonTest 类 继承自 Starling 的 DisplayObject

[cc lang=”actionscript3″]

public class RibbonTest extends DisplayObject

public function RibbonTest(speed:Number = 0.1, detailLevel:uint = 10, width:uint = 1)
{
super();

this.speed = speed;
this.touchable = false;
ribbonWidth = width;

controlPoints = new Vector.();
for(var i:Number = 0;i < detailLevel; i++) { controlPoints.push(new Vector3D(0, 0, 0)); } vertexList = new Vector.
(detailLevel*2,true);
rawPositionsBuffer=new Vector.(detailLevel*6,true);
rawUvBuffer=new Vector.
(detailLevel*4,true);
rawIndexBuffer=new Vector.((detailLevel-1)*6,true);

createRibbon();
createProgram();
createBuffer();
}

[/cc]

构造函数中 speed 为缓动的速度,后面会用到经典的缓动公式 (end-start)/speed;

detailLevel 控制点数量,控制点越多条带在转交的效果越细致

Continue reading

好久没有写教程神马的了,最近比较忙的说。

回到正题,最近打算在游戏中创建一个3D模型,由于游戏是Starling 2D游戏,因此打算把模型丢到UI里,3D模型出现在2D游戏里的话一定是高端大气上档次!

之前老外写的教程都是 Starling 和 Away3D 杂交, 但是仅仅在UI上摆一个3D模型就整合一个Away3D 实在是大材小用,也可以说是浪费性能, 索性自己来写一个。

先上个图。

一切以兼容为主, 实现一个类 DisplayObject3D 继承自 Starling 的显示对象 DisplayObject

之后override 其的 render 方法

[cc lang=”actionscript3″]

public override function render(support:RenderSupport, parentAlpha:Number):void

[/cc]

do you see that? ?这里我们能获取到一个 ?RenderSupport.

这可是一个好东西, 我们能从中获取到 mvpMatrix 即 模型视图投影矩阵, 有3d 和 2d 2个版本。

然后,我们可以从 Starling.current.context 获取到 GPU的 API模组, 有了这些东西,想干啥都行了。

Continue reading

今晚恒大赢了啊,为了看比赛不困喝了一杯咖啡,导致现在还睡不着的说~~~ ?比赛最后2分钟紧张死我了,守门员曾诚还被裁判警告拖延时间的说~ 哈哈。

之前的之前,今天才买2个月的三星显示器全屏发红的影响我Dota的发挥,心想900块的显示器果然不靠谱什么的,正在填下京东退货单的时候灵机一动,在红屏的时候开启我的PS3,切换信号源后一切正常了!!! 果然是连接我笔电的HDMI信号线的问题!!! 话说这线是买PS3时候某同事挑的,入手后这线只要扭曲到90度就无信号了~ (我这人又很节省嘛~)于是就将就用了,平时也相安无事,最近2个月果然连抗干扰这功能也费了吗?都搞的我显示器发红了(也许是被我笔电的排气口长期烧烤的缘故吧 :D). 一怒之下吃完饭,赶在恒大开始前飚车去买新线回来了~一切又完好如初!!

之前的之前的之前,中午把使命召唤10通关了的说~ 虽然配置碉堡了(我的小霸王关闭了 抗锯齿,景深, 全屏幕真实光反射 后高分辨满帧坚挺的说) 但是画面渣透了!!! 不过剧情真的很爽就是 了,秒9代几百条街!! IW 社果然不是盖的说。。。

因为某些原因,最近又开始撸Starling了~ ?命运总是让我无法彻底割舍你呢~~ 于是乎,下周吧,发一个在Starling下创建3D模型的教程吧~~ 支持Starling原生的画家算法的说。。。。

最后来个配图好了~~ 就决定你是了 – 使命召唤 – Ghosts

无意中发现《境界的彼方》完整PV出了,贴一下。。。

话说最近大作又扎堆出了~~下周三 使命召唤, 这周蝙蝠侠, 命运之镜HD~

突然又想败家一个Gundam 模型~~

沉默了一段时间,现在开始回归,有好多好东西准备分享一下

总之,运行后就是这样
p4

1.创建Robot类
2.添加 Hero 和 Robot 受伤 和 死亡 动作
3.添加 Robot 的AI 使之会跟踪玩家并攻击
4.添加音效

在 ActionSprite.lua 中添加方法
[cc lang=”lua”]
function ActionSprite:createBoundingBoxWithOrigin(origin,size)
local boundingBox = {}
boundingBox.original = CCRect()
boundingBox.actual = CCRect()

boundingBox.original.origin = origin
boundingBox.original.size = size
boundingBox.actual.origin = ccpAdd(ccp(self:getPositionX(),self:getPositionY()),ccp(boundingBox.original.origin.x,boundingBox.original.origin.y))
boundingBox.actual.size = size

return boundingBox
end
[/cc]
这里创建一个包围盒,其中 original 为 角色原始矩形
actual 为真实矩形,它会根据角色的坐标,不断修改该矩形的 x,y, 这个函数只在初始化时调用
Continue reading

之前已经实现了在场景上添加英雄,并使英雄播放待机动作,接下来让英雄在场景动起来

本游戏的代码已开源,包含游戏资源
git地址
https://github.com/dreamfairy/PrompaLua

首先我们创建用户控制层 HudLayer.lua 包位置为 scenes.layers.HudLayer.lua

HudLayer.lua 的内容为
[cc lang=”lua”]
local HudLayer = class(“HudLayer”, function()
return display.newLayer()
end)

local DPad
function HudLayer:ctor()

end

function HudLayer:getDPad()
return DPad
end

return HudLayer
[/cc]

可以看到我们实现了一个 getDPad()方法,但是DPad目前还是nil, 接下来开始创建 DPad 用户操控面板
创建 SimpleDPad.lua 包位置为 scenes.Controller.SimpleDPad.lua

Continue reading

=。= 很久没更新博客,偷懒了好久。 受某损友的影响接触到 quick-cocos2dx. 一个使用lua来编写游戏的框架,我使用的内核版本是 cocos2dx 2.1.5。 嘛~ DreamFairy 又是初次接触Lua, 于是决定边查Lua API手册边写一个横版过关游戏。

游戏的原型是 Allen Tan 的文章 http://www.raywenderlich.com/24155/how-to-make-a-side-scrolling-beat-em-up-game-like-scott-pilgrim-with-cocos2d-part-1原游戏是使用 objective-c 编写的IOS游戏教程

国内也有同学写了一篇C++ 的教程
http://blog.csdn.net/akof1314/article/details/8549150

so~ 我来搞一个lua版本的教程

本游戏的代码已开源,包含游戏资源
git地址
https://github.com/dreamfairy/PrompaLua

1.进入 quick-cocos2dxbin 目录,使用CMD打开create_project.bat 输入 cn.dreamfairy.prompalua 该包名创建项目
2.删除Demo项目文件MainScene.lua
3.修改 Config.lua 添加一些游戏的资源信息
Config.lua 内容:
[cc lang=”lua”]

— 0 – disable debug info, 1 – less debug info, 2 – verbose debug info
DEBUG = 2
DEBUG_FPS = true

— design resolution
CONFIG_SCREEN_WIDTH = 640
CONFIG_SCREEN_HEIGHT = 960

–资源
CONFIG_ROLE_SHEET_IMAGE = “pd_sprites.pvr.ccz”
CONFIG_ROLE_SHEET_FILE = “pd_sprites.plist”

–地图
CONFIG_TILEMAP_FILE = “pd_tilemap.tmx”

— auto scale mode
CONFIG_SCREEN_AUTOSCALE = “FIXED_WIDTH”

[/cc]
Continue reading