当前位置: 首页 > news >正文

给你的2D游戏添加3D效果

作者:numenzq

原文链接:http://www.j2medev.com/Article/ShowArticle.asp?ArticleID=1135

有两种方法给你的2D游戏添加3D效果。你可以使用内置的3D功能(例如:K700)或者你可以使用标准的2D API来模拟实现3D效果。

此外,使用手机内置3D功能并不需要把程序里的所有图形都实现3D效果。通常它是创建更多的场景,在普通的2D游戏中加入简单的3D效果。这样你可以不改变程序的核心代码就能在程序中实现简单的3D效果。

3D跳转页面

首先,或许很简单,这个效果是用3D动画取代一个存在的2D跳转页面。随着程序的增大,更多的数据需要花时间去装载,一个漂亮的跳转页面变得越来越重要。例子程序是一个3D跳转页面并提供代码下载。这个程序的主结构与显示一个java跳转页面是相同的,不过这个例子是使用的Mascot Capsule v3 APIK700上显示一个简单的3D动画。你也可以使用JSR-184 API代替Mascot Capsule v3 API,在K700上仍然支持(索尼爱立信SDKJSR-184支持并不完全,不过你可以在SUN网站上下载最新的JSR-184 API)。当静态的图片改为动态的动画时,它必须保证动画线程能获得CPU时间在初始化期间。所以我们定期的调用初始化线程的Thread.speel(20)方法。

在动画线程,动画是一帧一帧的向前变化,使用TimerTimerTask来控制按照固定率重复执行。

myTimer.scheduleAtFixedRate(new TimerTask(){

public void run() {
// Stop the Splash when
// initialization has finished
if(isInitialized){
myTimer.cancel();
}

splashCanvas.repaint();

nowFrame += 65536*3;
if (nowFrame>=maxFrame) {
if (maxFrame==0){
nowFrame = 0;
}else{
nowFrame %= maxFrame;
}
}
}
}, <chmetcnv w:st="on" unitname="l" sourcevalue="0" hasspace="False" negative="False" numbertype="1" tcsc="0">0L</chmetcnv>, <chmetcnv w:st="on" unitname="l" sourcevalue="100" hasspace="False" negative="False" numbertype="1" tcsc="0">100L</chmetcnv>);

3D菜单

这里仍然有许多我们能做的而不涉及实际游戏本身。游戏的菜单可以增加3D效果。按钮、选择框和其他标准的2D UI都能很容易的替换为3D等价物,你也可以创建完整的3D界面,配合不使用2D效果的情形。

这些要看你目前是什么水平,这些效果可能不需要调用3D引擎来创建。作为简单的效果,你可以创建2D图画来模拟简单的3D效果

游戏里的3D效果

当游戏是移动的,我们就有机会增强这些图形,使用2D技术来模拟3D效果。

我们可以以2D效果开始,例如,使用LayerManager实现云或烟雾在其他层前面漂移效果,从而模拟不同的远景并造成感官深度。同样的技术适用于背景是标准的水平卷轴游戏,通过把背景创建为两层,并使前面一层的移动快于后面一层的移动。你可以下载这个程序的代码。

由于真正的3D的支持,在游戏中,你可让3D成为主动的部分或仅仅使用它在一些被动的方式。主动使用的意思是这样的,例如:一个太空飞船或汽车是受用户约束的,它们的显示受到用户的输入和移动所影响。而被动使用是指当你使用一个3D效果时,不依赖于用户的交互信息。

下载3D转换页面代码

下载3D卷轴代码

相关文章:

  • docker2 和docker-compose
  • docker3 docker-compose.yml 文件编写
  • nginx基础1
  • nginx1
  • 承认多元化,保持宽容
  • nginx2
  • 如何编写高质量的代码——来自《代码大全(第2版)》的启示
  • nginx3 gzip等
  • ClickHouse概述
  • godaddy/terminus 健康检查
  • node 中nextjs
  • 利用visual source safe管理代码
  • 【Nest 极速指南】应用篇之 ElasticSearch
  • next 微服务
  • 服务器拉取git代码
  • JS中 map, filter, some, every, forEach, for in, for of 用法总结
  • 【159天】尚学堂高琪Java300集视频精华笔记(128)
  • 【162天】黑马程序员27天视频学习笔记【Day02-上】
  • 【跃迁之路】【699天】程序员高效学习方法论探索系列(实验阶段456-2019.1.19)...
  • 08.Android之View事件问题
  • C++类的相互关联
  • JS字符串转数字方法总结
  • PermissionScope Swift4 兼容问题
  • PHP的类修饰符与访问修饰符
  • Rancher-k8s加速安装文档
  • SpringCloud(第 039 篇)链接Mysql数据库,通过JpaRepository编写数据库访问
  • Terraform入门 - 1. 安装Terraform
  • Vue.js 移动端适配之 vw 解决方案
  • 从0实现一个tiny react(三)生命周期
  • 我的面试准备过程--容器(更新中)
  • 一道闭包题引发的思考
  • linux 淘宝开源监控工具tsar
  • 阿里云重庆大学大数据训练营落地分享
  • ​RecSys 2022 | 面向人岗匹配的双向选择偏好建模
  • #include<初见C语言之指针(5)>
  • #我与Java虚拟机的故事#连载08:书读百遍其义自见
  • (175)FPGA门控时钟技术
  • (23)Linux的软硬连接
  • (TipsTricks)用客户端模板精简JavaScript代码
  • (二) Windows 下 Sublime Text 3 安装离线插件 Anaconda
  • (翻译)Quartz官方教程——第一课:Quartz入门
  • (附源码)springboot电竞专题网站 毕业设计 641314
  • (个人笔记质量不佳)SQL 左连接、右连接、内连接的区别
  • (汇总)os模块以及shutil模块对文件的操作
  • (转)scrum常见工具列表
  • (转)大型网站的系统架构
  • (轉貼) 寄發紅帖基本原則(教育部禮儀司頒布) (雜項)
  • .[hudsonL@cock.li].mkp勒索加密数据库完美恢复---惜分飞
  • .htaccess 强制https 单独排除某个目录
  • .net core 客户端缓存、服务器端响应缓存、服务器内存缓存
  • .NET Core实战项目之CMS 第一章 入门篇-开篇及总体规划
  • .net2005怎么读string形的xml,不是xml文件。
  • .Net的C#语言取月份数值对应的MonthName值
  • .net的socket示例
  • .Net多线程总结