【v2.x OGE-example 第二章(第二节) 修改器的使用】

简单盘点游戏开发引擎 无论是2D游戏还是3D游戏,游戏引擎都充当着游戏骨架的角色,没有游戏引擎就无法做出一款真正的游戏,通过游戏引擎制作者可以把画面、剧情、关卡、操作等元素拼接在一起,成为一款完整的游戏,同时赋予制作者实现其设计理想的可能性。   游戏引擎的功能丰富程度、画面表现力与拓展性,对于游戏的最终品质有很大的影响,于是商业引擎便开始崭露头角,Unity3D、Cocos2d、UDK, libgdx、OGEngi 阅读详情


1. 位置:Modifier_example --> Modifier
2. 类名:Modifier

 

 

(1).使用modifier 可以做出一些精灵的特效,旋转,倾斜,透明,放大,缩小等等。常用的modifier如下,

<1>. AlphaModifier 透明度修改器

<2>. ColorModifier 颜色修改器

<3>. CubicBezierCurveMoveModifier 三次方贝塞尔曲线曲线修改器

<4>. DelayModifier 延迟修改器

<5>. FadeInModifier 淡入修改器

<6>. FadeOutModifier 淡出修改器

<7>. JumpModifier 跳跃修改器

<8>. MoveByModifier 移动修改器(当前位置开始)

<9>. MoveModifier 移动修改器(从某个点到另外一个点)

<10>. MoveXModifier 移动X修改器

<11>. MoveYModifier 移动Y修改器

<12>. PathModifier 路径修改器

<13>. QuadraticBezierCurveMoveModifier 二次贝塞尔曲线修改器

<14>. RotationAtModifier 旋转修改器(需传入旋转中心点)

<15>.RotationByModifier 旋转修改器(只需传入旋转到的目标角度)

<16>. RotationModifier旋转修改器(从某个角度到另外一个角度)

<17>. ScaleAtModifier缩放修改器(需传入缩放中心点)

<18>. ScaleModifier 缩放修改器(从缩放多少倍数到另外一个倍数)

<19>. SkewModifier 倾斜修改器

<20>. SkewXModifier 倾斜X修改器

<21>. SkewYModifier 倾斜Y修改器

 

<22>. LoopEntityModifier循环容器修改器(使某个动作修改器循环实行)

<23>. SequenceEntityModifier序列容器修改器(使某几个动作修改器依次实行)

<24>. ParallelEntityModifier并行实体容器修改器(使某几个动作修改器同时实行)

 

(2).以下是使用modifier的例子:

/**普通Modifier用法*/

private void setGeneralModifier() {

//画蓝色背景 填满屏幕

Rectangle rectangle = new Rectangle(0, 0, getWidth(), getHeight(), getVertexBufferObjectManager());

rectangle.setColor(0.09804f, 0.6274f, 0.8784f);

this.attachChild(rectangle);//加入场景

AnimatedSprite face_rect = new AnimatedSprite(gap*1, 150, Regions.FACE_RECTANGLE, getVertexBufferObjectManager());

this.attachChild(face_rect);

//2秒内 从0度转到360度

RotationModifier rotation_mod = new RotationModifier(2, 0, 360);

//注册一个Modifier(修改器)在face_rect中

face_rect.registerEntityModifier(rotation_mod);

}

 

/**安先后顺序执行Modifier用法*/

private void setSequenceEntityModifier(){

AnimatedSprite face_rect = new AnimatedSprite(gap*2, 150, Regions.FACE_RECTANGLE, getVertexBufferObjectManager());

this.attachChild(face_rect);

//2秒内 从0度转到360度

RotationModifier rotation_mod = new RotationModifier(2, 0, 360);

//1秒内 从1倍放大到2倍

ScaleModifier scale_mod = new ScaleModifier(1, 1, 2);

//定制两个Modifier按先后顺序执行

SequenceEntityModifier sequence_mod = new SequenceEntityModifier(rotation_mod, scale_mod);

//注册一个Modifier(修改器)在face_rect中

face_rect.registerEntityModifier(sequence_mod);

}

 

/**循环执行的Modifier*/

private void setLoopEntityModifier(){

AnimatedSprite face_rect = new AnimatedSprite(gap*3, 150, Regions.FACE_RECTANGLE, getVertexBufferObjectManager());

this.attachChild(face_rect);

//2秒内 从0度转到360度

RotationModifier rotation_mod = new RotationModifier(2, 0, 360);

//1秒内 从1倍放大到2倍

ScaleModifier scale_mod = new ScaleModifier(1, 1, 2);

//延时0.5s

DelayModifier delay_mod = new DelayModifier(0.5f);

//Modifier按先后顺序执行

SequenceEntityModifier sequence_mod = new SequenceEntityModifier(rotation_mod, delay_mod, scale_mod);

//Modifier 循环执行

LoopEntityModifier loop_mod = new LoopEntityModifier(sequence_mod);

//注册一个Modifier(修改器)在face_rect中

face_rect.registerEntityModifier(loop_mod);

}

/**Modifier 加入监听器*/

private void setModifierListener(){

AnimatedSprite face_rect = new AnimatedSprite(gap*4, 150, Regions.FACE_RECTANGLE, getVertexBufferObjectManager());

this.attachChild(face_rect);

//2秒内 从0度转到360度

RotationModifier rotation_mod = new RotationModifier(2, 0, 360);

//IEntityModifierListener Modifier监听器,监听开始、结束

LoopEntityModifier loop_mod = new LoopEntityModifier(rotation_mod, 5, new IEntityModifierListener() {

@Override

public void onModifierStarted(IModifier<IEntity> pModifier, IEntity pItem) {

//pItem = which will be register

System.out.println("onModifierStarted");

pItem.setVisible(true);

}

@Override

public void onModifierFinished(IModifier<IEntity> pModifier, IEntity pItem) {

//pItem = which will be register

System.out.println("onModifierFinished");

pItem.setVisible(false);

}

});

//注册一个Modifier(修改器)在face_rect中

face_rect.registerEntityModifier(loop_mod);

}

/**一个并行Modifier*/

private void setParallelEntityModifier(){

AnimatedSprite face_ball = new AnimatedSprite(gap*1, 300, Regions.FACE_BALL, getVertexBufferObjectManager());

//1秒内 从0度转到360度

RotationModifier rotation_mod = new RotationModifier(1, 0, 360);

//1秒内 从1倍放大到2倍

ScaleModifier scale_mod = new ScaleModifier(1, 1, 2);

//1秒内 透明度从1到0

AlphaModifier alpha_mod = new AlphaModifier(1, 1, 0);

       //并行 Modifier

ParallelEntityModifier parallel_mod = new ParallelEntityModifier(rotation_mod,scale_mod,alpha_mod);

       // 循环  Modifier

LoopEntityModifier loop_mod = new LoopEntityModifier(parallel_mod);

//注册 Modifier

face_ball.registerEntityModifier(loop_mod);

//加入场景

this.attachChild(face_ball);

}

private void irregular_EntityModifiers(){

final AnimatedSprite face1 = new AnimatedSprite(gap*2, 300, Regions.FACE_BALL, this.getVertexBufferObjectManager());

face1.setRotationCenter(0, 0);//设置左上角为旋转中心点

face1.setScaleCenter(0, 0);//设置左上角为放大中心点

face1.animate(100);

 

final AnimatedSprite face2 = new AnimatedSprite(gap*3, 300, Regions.FACE_RECTANGLE, this.getVertexBufferObjectManager());

face2.animate(100);

 

final SequenceEntityModifier entityModifier = new SequenceEntityModifier(

new IEntityModifierListener() {

@Override

public void onModifierStarted(final IModifier<IEntity> pModifier, final IEntity pItem) {

System.out.println("Sequence started.");

}

 

@Override

public void onModifierFinished(final IModifier<IEntity> pEntityModifier, final IEntity pEntity) {

System.out.println("Sequence finished.");

}

},

//第一步:2秒  X从1.0缩小到0.75,Y从1.0放大到2.0

new ScaleModifier(2, 1.0f, 0.75f, 1.0f, 2.0f),

//第二步:2秒  X从0.75放大到2.0,Y从2.0缩小到1.25

new ScaleModifier(2, 0.75f, 2.0f, 2.0f, 1.25f),

//第三步:放大并旋转

new ParallelEntityModifier(

new ScaleModifier(3, 2.0f, 5.0f, 1.25f, 5.0f),//3秒  X从2.0放大到5.0,Y从1.25放大到5.0

new RotationByModifier(3, 180)//3秒 旋转到180度

),

//第四步:缩小并旋转

new ParallelEntityModifier(

new ScaleModifier(3, 5, 1),//3秒 从5缩小到1

new RotationModifier(3, 180, 0)//3秒 旋转从180到0

)

);

 

//注册 entityModifier 到face1 

face1.registerEntityModifier(entityModifier);

//拷贝出一个 entityModifier 注册到face2

face2.registerEntityModifier(entityModifier.deepCopy());

 

this.attachChild(face1);//加入场景

this.attachChild(face2);//加入场景

 

/* Create some not-modified sprites, that act as fixed references to the modified ones. */

/* 加入两个没有做任何动作的精灵作为参考 */

final AnimatedSprite face1Reference = new AnimatedSprite(face1.getX(), face1.getY(), face1.getTiledTextureRegion(), this.getVertexBufferObjectManager());

final AnimatedSprite face2Reference = new AnimatedSprite(face2.getX(), face2.getY(), face2.getTiledTextureRegion(), this.getVertexBufferObjectManager());

 

this.attachChild(face1Reference);

this.attachChild(face2Reference);

}

 

 

OGE_Example项目源码

 

【v2.x OGE教程 16】 Modifier使用相关 OGE引擎的修改器功能很强大,为我们提供了丰富的修改器的实现类,可以修改实体的属性,提供了移动、旋转、缩放、透明、自定义序列、同步、循环等功能,而且改变的效果可以当场生效,也可以在某一个时间段内生效并且可以提供一些缓动函数达到更加丰富的效果。   一、Modifier创建 使用实例: IEntity ball=new Sprite(0,0,ballRegion,this.g 阅读详情

相关推荐

【v2.x OGE教程 12】 关卡编辑器帮助文档

【v2.x OGE教程 12】 关卡编辑器帮助文档 一、简介 关卡编辑器用于游戏关卡界面元素的可视化编辑,包括元素的位置、尺寸以及其它自定义属性。通过解析生成的数据文件即可获取关卡信息,并能随时调整,以减少开发工作量,提高开发效率。 二、界面 主界面 图01_主界面           1) 画布 ① 简介 画布用于关卡元素的预览,并提供元素选择和坐标设置等功能

OrangeGame的专栏 2701

AndEngine之DEMO学习(七)EntityModifierExample

接着上篇的内容,这个上个例子说的是使用IUpdateHandler进行业务更新,这回的例子是一EntityModifier的方式对业务进行更新。Modifier我们可以分成两种不同类型,一种可以叫做延时类Modifier,主要处理在一定时间段内的实体变化;一直可以叫做容器类Modifier,主要用来组合多个延时类Modifier,并按次序执行他们。容器类Modifier只有实现了三个子类,分...

xumingrencai 160

【v2.x OGE教程 11】 动画编辑器帮助文档

【v2.x OGE教程 11】 动画编辑器帮助文档 版本 日期 作者 说明 1.0 2014-9-3 橙子游戏 文档创建       一、简介 动画编辑器用于游戏动画的可视化编辑,支持序列帧动画和关键帧动画。通过解析生成的数据文件即可获取动画信

OrangeGame的专栏 2425

基于Netty的代理工具Proxy

前言 个人扯淡博客:http://blog.ztgreat.cn Netty是一个高性能、异步事件驱动的NIO框架,提供了对TCP、UDP和文件传输的支持,对于目前而言,只要互联网存在,那么网络IO 也将存在,就目前的形式而言,硬件越来越好,带宽也越来越大,这个时候IO的瓶颈就凸显了出来,个人觉得,掌握一门IO框架是很重要的,不能仅仅的学会做点应用层,对于中下层还是需要熟悉的,这样才能健全整个...

小张的专栏 9305

AutoProxy修改版

AutoProxy修改版,解决火狐自带的AutoProxy不能添加规则的问题

SpringBoot项目启动后ShardingSphere5.0首次SQL查询慢?这个预热技巧帮你搞定

本文针对SpringBoot项目集成ShardingSphere 5.0后首次SQL查询慢的问题,深入剖析了其根源在于SQL解析引擎的懒加载与缓存初始化。文章提供了三种有效的预热技巧,包括精准的SQL解析引擎预热、简单查询触发全链路预热以及可配置的生产级方案,帮助开发者将初始化成本提前至应用启动阶段,从而消除性能毛刺,提升用户体验与系统稳定性。

chair的专栏 1062

动态代理(Dynamic Proxy)

[size=large]代码例子:[/size] [code="java"] package com.test; /** * 一个真实的接口 * @author yale * */ public interface ISubject { public void request(); } [/code] [code="java"] package com.tes...

只想靠两手,向理想挥手 155

保姆级教程:在Zynq UltraScale+ EV系列FPGA上,用VCU IP核搞定4K60帧H265视频解码与HDMI2.0输出

本文提供在Zynq UltraScale+ EV系列FPGA上使用VCU IP核实现4K60帧H265视频解码与HDMI2.0输出的全流程指南。从开发环境准备、Vivado工程配置到PetaLinux系统定制,详细解析硬件选型、IP核参数设置及性能优化技巧,帮助开发者快速构建高效视频处理系统。

weixin_30800987的博客 432

破解的一款抓包工具,debug proxy,教你怎么修改so

2019年03月17日10:33:17 更新一下 目前这个app在谷歌商店下不到了,并且原来能抓的数据,现在也抓不到了,比如我们公司开发的app,没有做防护,可能跟证书有关。 1.这个软件可以在google play里搜到,很不错,用来抓取手机里app的网络请求,可以模拟弱网络,抓取部分http等,是一个很好用的网络调试工具。下载地址:https://pan.baidu.com/s/1i5...

u010232308的博客 7562

计算机组成原理汉字编码与校验设计实验报告(汉字国标码转区位码实验、汉字机内码获取实验、海明编码电路设计与海明解码)

这次实验利用logisim进行设计,进行了以下这四个实验,其中分为汉字国标码转区位码实验、汉字机内码获取实验、海明编码电路设计与海明解码,实验报告分为四个部分,在这四个部分中依次对四个实验的方案设计,设计思路进行了介绍

zhang2gongzi的博客 6万+

常规波束形成——时域波束形成、频域波束形成

本文介绍了波束成形,包括时域波束成形和频域波束成形,并解释了在实现过程可能存在疑惑的相位补偿。

Candy_Editor的博客 3659

橙子引擎CEO尚韬:Home Internet开启,TV游戏迎来革命

2014智能电视游戏品牌峰会于12月26日在深圳科技园顺利举行。这次会议是智能电视游戏行业发展的行业盛会,对于智能电视游戏未来方向有着导向作用。本次会议橙子引擎联合了众多明星游戏开发商,携多款全新交互精品TV游戏现场演示,上演最强TV游戏产品路演秀!本次会议汇聚了大部分游戏渠道、游戏开发商、以及投资机构参与,精彩的游戏演示得到了在座的观众一致好评和期待。橙子引擎CEO尚韬,在峰会上做了主题为“Ho

OrangeGame的专栏 2168

通达信抓波段指标(主图)

VAR3:=IF(INBLOCK('科创板'),VART20,IF(INBLOCK('创业板') AND DATE>1200823,VART20,IF(INBLOCK('ST板块'),VART5,VART10)));VAR5:=IF(INBLOCK('科创板'),CT20,IF(INBLOCK('创业板') AND DATE>1200823,CT20,IF(INBLOCK('ST板块'),CT5,CT10)));曾涨停/紫色细K线:青字"炸",涨停未封住。曾跌停/蓝色细K线:红字"撬",跌停被打开。

q125500612的博客 2135

OGEngine教程:字体工具使用

1.打开 BitmapFont tool,在红框中输入你要显示的字。 2.写完后保存字体文件 保存后可以得到一个.fnt  和  一个.png 文件 3.使用 TexturePacker 工具将bitmapFont.png转换pvr格式通过Add Sprites把 bitmapFont.png导入,填写好相关文件保存位置和名字。 注意下面红框部分的参数设置,跟下面的截图

OrangeGame的专栏 1945

Oracle EBS Interface/API(43) -自定义AP发票状态说明API

在某项目,客户需求获得AP发票的状态说明,例如对账系统或者某些报表。由于标准系统未提供状态说明,需要通过AP发票的标准Form获得相关业务逻辑,然后自定义AP发票状态说明API。

陈显平的专栏-Oracle EBS 605

搞定ESD(二):ESD干扰机理分析

大家好,我是记得诚。上文介绍了ESD的基本知识,对ESD的测试标准进行了解析,包括静电发生器的介绍,实验布置要求,静电放电实验的实施及判定等内容。本文主要介绍ESD的干扰机理。

记得诚 4297

橙子引擎携多款精品TV游戏诚意呈献 2014智能电视游戏品牌峰会

橙子引擎携多款精品TV游戏诚意呈献 2014智能电视游戏品牌峰会   活动时间:2014.12.26  14:00—17:00 活动地点:深圳南山科技园科兴科学园会议中心8号厅 主办单位:橙子引擎 协办单位:网势网络、浩动游戏   活动介绍: 智能电视游戏行业前景光明,但是也存在一些问题:游戏内容不够吸引人,大型游戏画面感粗糙,玩家无法更好的体验游戏带给他们的乐趣。 智能电视

OrangeGame的专栏 1938

【MATLAB-app】系列教程(含视频)第4、5、6课:实战_制作简单的图像处理软件

写作时间: 2020-12-27 我的教程目录 第1课:初步了解appdesigner 第2课:学会制作一个计算器 第3课:学习更多的控件(重点!) 第4课:实例1:制作一个图像处理软件 第5课:学习APPdesigner的设计精髓,框架 第6课:结合使用多种控件,函数等,丰富我们的实例1 第7课:app设计打包,完成工程应用导出 标题: 第4课:我的实例_学会制作一个图像处理软件 本文目录: 1.先看看我之前的一个工程 2.常用的基本组件控件 3.最常用且实用的控件的用法 -3.1 editfilel

wind 4054

橙子引擎CEO尚韬:蓝海破冰,重新定义TV游戏

橙子引擎CEO尚韬:蓝海破冰,重新定义TV游戏   2014智能电视游戏峰会于11月29日在深圳南山科技园召开。这次是智能电视游戏未来发展的行业盛会,是加速智能电视游戏发展的蓝海破冰之旅。本次会议业内巨头云集,精英汇聚,从引擎技术到电视游戏分发,共探讨电视游戏的发展。橙子引擎CEO尚韬,在峰会上做了主题为“蓝海破冰,橙子引擎重新定义TV游戏”的主题演讲。 黑暗中摸索前进的智能电视 据数

OrangeGame的专栏 1932

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

智能电视游戏品牌峰会顺利召开,多款精品TV游戏发布

12.26,在大家还沉浸在欢乐的圣诞氛围中时,智能电视游戏行业内颇具影响力的会议已经在深圳召开。由橙子引擎(OGEngine)主办的《2014智能电视游戏品牌峰会——精品TV游戏产品发布会》在深圳南山科技园顺利举办,本次会议汇聚了众多明星游戏CP和游戏渠道等业内巨头,更是得到了业内众多媒体的支持。        纵观整个智能电视游戏行业的发展趋势,我们不难发现其中的各种机遇,积极的发展趋势和

OrangeGame的专栏 1742

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

【v2.x OGE教程 14】 控件使用

下面介绍精灵、动画精灵、按钮精灵、文本的常用使用方法   一、精灵相关   1.添加精灵 //创建精灵 Sprite bar_up = new Sprite(400, 0, RegionRes.getRegion(Res.BAR_UP),    getVertexBufferObjectManager()); //将精灵添加至BaseEntityGroup或其子类(如:Scene、L

OrangeGame的专栏 1618

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

OGEngine教程: 图片资源加载及工具使用

下面给大家讲下关于图片资源从下载到使用的一个流程 说明 TexturePacker这个词从字面来说就是Texture(纹理) + Packer(打包)。将材质打包成大图,将小图通过算法合并成大图,减少了io的读取,同时占用了更少的内存空间。并且代码里也更容易管理这些材质。 下载 官网:http://www.codeandweb.com/texturepacker 使用 安装完毕,现在我

OrangeGame的专栏 1512

Android安卓游戏引擎大搜罗

1.AndEngine 简介: AndEngine基于libGDX框架开发,使用OpenGL ES进行图形绘制。同时继承了BOX2D物理引擎,因此能实现一些较为复杂的物理效果。在Rokon停止更新以后,AndEngine 成为Android 最为流行的2D游戏引擎 优点: (1)高效:在大运算量好事情况下,使用C/C++本地代码进行开发。比如物理引擎或者音频处理。 (2)AndEngin

OrangeGame的专栏 1432
上一篇: 【v2.x OGE-example 第二章(第一节) 精灵的移动】
下一篇: 2014智能电视游戏峰会顺利召开,开启行业破冰序幕
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值