libgdx和unity_libgdx和Kotlin –类[2D平台原型]

libgdx和unity

这篇文章是libgdx和Kotlin文章的后续文章。

我已经决定开发一个简单的2D平台程序的原型(沿着我的早期文章中的Star Assault进行介绍),但是我一直在使用和学习Kotlin,而不是Java。

对于本教程,该项目应处于上一篇文章的初始状态。 一个简单的libGdx Java项目变成了Kotlin项目。 我们将在主要的Game.kt文件(以前为Nemo.kt进行干扰。

初始状态的项目源可以在这里找到。

Kotlin不需要文件名与类名相同,甚至不需要与声明的包等效的目录结构中。

事不宜迟,这是代码的第一个更改。

主要类别已从Nemo更改为Game ,因为我们将使用名称Nemo作为角色。
因此, Nemo.kt > Game.kt

...// imports omitted
class Game : ApplicationAdapter() {internal lateinit var batch: SpriteBatchinternal lateinit var img: Textureinternal lateinit var nemo: Nemooverride fun create() {batch = SpriteBatch()img = Texture("images/nemo_01.png")nemo = Nemo()}override fun render() {Gdx.gl.glClearColor(0f, 0f, 0f, 1f)Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT)batch.begin()batch.draw(img, nemo.position.x, nemo.position.y)batch.end()}data class Nemo(val position: Vector2 = Vector2(0f, 0f))
}

突出显示的行显示更改。

  • #05 –声明类型为Nemo的属性nemo并将其标记为延迟初始化。
  • #09 –为纹理加载不同的gif(在github上查看项目)
  • #10 –实例化Nemo类。 这等效于java new Nemo();
  • #21 –此行创建一个具有一个属性的数据类,即libGdx中类型为Vector2的位置,并且在初始化时将其默认为Vector2(0f,0f)的情况下默认将其设置为new。

数据类是一个数据容器类,其中包含生成的getterssetters如果属性为var而不是valequalshashCodetoString 。 请注意该属性的val限定符,这意味着该位置是final且不可变。 这意味着,一旦将向量分配给它,就无法对其进行修改。 向量的值可以修改 。 除非另有要求,否则最好使所有内容保持不变,并且Kotlin旨在将这种模式用作默认模式。

这是以下内容的简写:

public class Nemo {// val is the equivalent of final private final Vector2 position;// constructor with argumentpublic Nemo(Vector2 position) {this.position = position;}// default constructorpublic Nemo() {this.position = new Vector2(0f, 0f);}// getterpublic Vector2 getPosition() {return position;}@Overridepublic boolean equals(Object o) {if (this == o) return true;if (o == null || getClass() != o.getClass()) return false;Nemo nemo = (Nemo) o;return position != null ? position.equals(nemo.position) : nemo.position == null;}@Overridepublic int hashCode() {return position != null ? position.hashCode() : 0;}@Overridepublic String toString() {return "Nemo{" +"position=" + position +'}';}
}

整个类被嵌套在该类中的一行替换。 分号也不需要标记指令的结尾。

data class Nemo(val position: Vector2 = Vector2(0f, 0f))
  • #17 –该指令在Nemo保持的位置绘制先前加载的纹理。 等效的Java代码为:
    batch.draw(img, nemo.getPosition().getX(), nemo.getPosition().getY());

在Kotlin中,我们不需要指定getter或setter,我们对属性使用点表示法。 所有这些都由编译器负责,并推断出访问器方法。

nemo.getPosition().getX()

变成

nemo.position.x

尝试运行项目,以便我们可以看到结果:

游戏画面实战

游戏画面实战

现在就这样。 确保您查阅有关类的Kotlin文档,以了解有关它们的更多信息。

在下一部分中,我们将把Nemo变成动画和可移动的角色。

  • 在此处获取源代码

翻译自: https://www.javacodegeeks.com/2016/02/libgdx-kotlin-classes-2d-platformer-prototyping.html

libgdx和unity

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/336528.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java1.7开发环境_在Windows平台搭建Java 1.7开发环境

OS:Windows 7 or laterJava Version: 1.7.x本文具体的演示环境是:Windows 8.1,Java 1.7.0_45。一、安装JDK需要注意的是安装路径中不要出现非西文符号。实际上我一般喜欢在安装路径中也尽可能不出现空格。比如:在我的PC上&#xf…

gluon_带有Gluon Ignite和Dagger的JavaFX中的依赖注入

gluon依赖注入抽象框架Gluon Ignite在几个流行的依赖注入框架(例如Spring,Dagger和Guice)上创建了一个通用抽象。 目前,Gluon 页面仅包含一个示例,该示例使用Gluon Ignite和Google Guice作为依赖注入框架,…

couchbase_具有Couchbase,Java EE和WildFly的CRUD Java应用程序

couchbaseCouchbase是一个开源的NoSQL文档数据库。 它允许访问,索引和查询JSON文档,同时利用集成的分布式缓存来实现高性能数据访问。 开发人员可以使用不同的语言(Java,Go,.NET,Node,PHP&…

java 对象的态_Java面向对象-------多态总结

1.多态:是同一个行为具有多个不同表现形式或形态的能力。多态就是同一个接口,使用不同的实例而执行不同操作,如图所示:多态性是对象多种表现形式的体现。2.多态作用:1. 消除类型之间的耦合关系2. 可替换性3. 可扩充性4…

netbeans连接数据库_NetBeans Java EE技巧#1 –数据库中的实体类

netbeans连接数据库NetBeans IDE是开发各种应用程序的绝佳选择。 具体来说,我每天都使用它来开发和维护Java EE应用程序。 在过去的几个发行版中,不仅Java EE的生产力提高了,而且NetBeans IDE还减少了开发应用程序的时间……使Java EE和NetBe…

jboss fuse 教程_使用JBoss Fuse和OpenShift进行Cloud Native Camel骑行

jboss fuse 教程红帽公司最近发布了一个微服务集成工具包,用于在OpenShift v3的Docker和Kubernetes环境中运行我们的微服务。 为了帮助人们更好地理解这一点,我将Rider Auto应用程序迁移到一组微服务中,该应用程序已经存在了一段时间&#xf…

javaone_JavaOne 2015 –又一年,又向前迈进了一步

javaoneJavaOne 2015 San Francisco于10月25日至29日举行。 我很自豪地说这是我第九个人参加JavaOne,第七个人是演讲者,第四个人是Oracle员工,第三个人是内容委员会成员,第二个人是项目负责人。 我认为对于JavaOne来说&#xff0c…

lnp和mysql分开安装_毕业设计之LNP+DISCUZ +分离的数据库操作

环境介绍:CentOS6.9最小化安装https://nginx.org/download/nginx-1.16.1.tar.gzhttps://www.php.net/distributions/php-7.3.14.tar.gzhttps://cdn.mysql.com//Downloads/MySQL-5.7/mysql-boost-5.7.29.tar.gznginxphp主机:192.168.111.141mysql主机&…

java中hotspot_Java 8中HotSpot选项的改进文档

java中hotspotOracle的HotSpot Java 8实现中引入的一些小但受欢迎的功能之一是在启动器的文档中添加了许多常见的HotSpot Java启动器 ( java )选项/标志。 过去,甚至对某些相当常见的HotSpot JVM选项都感兴趣的开发人员不得不潜在地寻找多个不…

qchart折现图_Qt开发技术:QCharts(二)QCharts折线图介绍、Demo以及代码详解

若该文为原创文章,未经允许不得转载各位读者,知识无穷而人力有穷,要么改需求,要么找专业人士,要么自己研究敬请期待…红胖子,来也!介绍了整体框架,开始动手码代码,按照顺…

各类算法思想

暴力枚举法 使用场景注意事项 1.建立一个简洁的搜索模型,变量尽可能少 2.尽可能减少搜索空间 递归与分治法 分治使用最广泛一类算法。采用递归的思想将较大规模的问题分成小问题来求。如果原问题可以分割成k个子问题,并且这些子问题可以重复利用&am…

eclipse neon_在自定义Java 9映像上运行Eclipse Neon

eclipse neon我已经开始修改自定义Java二进制运行时映像文件。 映像文件是打包为运行时平台的模块的配置。 基本上,默认映像包含组成Java运行时的所有内容。 自定义图像可以包含该图像的一些子集。 例如,我创建了一个仅包含“ compact 3”概要文件的映像…

java json注解_返回json用什么注解

返回json用“ResponseBody”注解,“ResponseBody”是作用在方法上的,“ResponseBody”表示该方法的返回结果直接写入“HTTP response body”中。本篇文章将介绍两种示例进行JSON返回注解方式演示。示例1ResponseBody是作用在方法上的,Respons…

java数据结构博客园_常见数据结构的Java实现

单链表的Java实现首先参考wiki上的单链表说明,单链表每个节点包含数据和指向链表中下一个节点的指针或引用。然后看代码import java.lang.*;public class SinglyLinkeList{Node start;public SinnglyLinkedList(){this.startnull;}public void addFront(Object newD…

jboss4 java_带有JBoss工具的OpenShift 3上的Java EE 7应用程序

jboss4 java您可以使用最新版本的JBoss Tools OpenShift插件在Eclipse中创建和管理OpenShift应用程序。 他们要么预先捆绑了最新的 JBoss Developer Studio(9.0.0.GA) ,也可以将它们安装到现有的Eclipse Mars中。 这篇文章将引导您通过JBoss…

javaslang_使用Javaslang的Java 8中的功能数据结构

javaslangJava 8的lambda(λ)使我们能够创建出色的API。 它们极大地提高了语言的表达能力。 Javaslang利用lambda来基于功能模式创建各种新功能。 其中之一是功能性集合库,旨在替代Java的标准集合。 (这只是鸟瞰图,您…

java调用kafka接口发送数据_Java调用Kafka生产者,消费者Api及相关配置说明

本次的记录内容包括:1.Java调用生产者APi流程2.Kafka生产者Api的使用及说明3.Kafka消费者Api的使用及说明4.Kafka消费者自动提交Offset和手动提交Offset5.自定义生产者的拦截器,分区器那么接下来我就带大家熟悉以上Kafka的知识说明1.Java调用生产者APi流…

java如何模拟请求_单元测试如何模拟用户请求

python web自动化测试设计构工具书40.9元包邮(需用券)去购买 >错误正当我高高兴兴写完后台c层的测试代码准备提交时,测试机器人报了很多401错误,把代码拉下来一看,原来当我写代码时,我的伙伴已经写好后台的拦截器了&#xff0c…

LeetCode 83. 删除排序链表中的重复元素

原题链接 解法:通过一个指针从头到尾进行扫描 class Solution { public:ListNode* deleteDuplicates(ListNode* head) {if(!head)return nullptr;auto p1 head;while(p1->next){if(p1->next->val p1->val)p1->nextp1->next->next;else p1 …

后端 java ee_刷新器-Java EE 7后端十大功能

后端 java ee这是我的小型Java EE 7复习系列的第二部分。 在进行了简要概述的第一篇介绍之后,我决定请Arjan Tijms撰写有关Java EE 7中他最喜欢的后端新功能的信息。如果您关注Java EE领域,您将会知道Arjan。 他是Java EE开发人员,JSF和Secur…