搜索
首页科技周边IT业界复古革命:建立一个统一的乒乓球

Unity Pong 克隆教程:一步步构建经典游戏

在开始之前,您可以在itch.io上查看游戏

Retro Revolution: Building a Pong Clone in Unity

核心要点

  • 在Unity中构建Pong克隆包含几个关键步骤,包括设置游戏环境、添加玩家输入、管理球和边界碰撞、实现敌人AI、生成球以及添加基本文本说明。
  • 游戏环境设置包括在Unity中创建一个新的2D项目,将游戏屏幕的纵横比设置为4:3,并为脚本、精灵、预制件和材质创建文件夹。需要下载精灵并将其添加到“精灵”文件夹中,并调整每像素单位以确保清晰干净的外观。
  • 玩家输入通过名为“PlayerController”的C#脚本添加,该脚本设置玩家的速度和玩家移动的范围。将Box Collider 2D添加到Player游戏对象以处理碰撞。
  • 球和边界碰撞通过创建名为“Bounce”的Physics2D材质来管理,其弹性设置为1,摩擦力设置为0。将Circle Collider 2D和Rigidbody 2D添加到Ball游戏对象以管理其与环境的交互。
  • 敌人AI通过名为“EnemyController”的C#脚本实现,该脚本设置敌人的速度并管理其响应球的位置而进行的移动。敌人的范围也在此脚本中设置。
  • 球的生成通过创建“BallSpawner”游戏对象和名为“BallSpawnerController”的C#脚本进行。该脚本检查是否存在球,如果不存在,则创建一个新的球。

Pong游戏分析

Pong是最早的电子游戏之一,也是第一个成功的商业游戏。当Pong首次创建时,开发人员很可能在代码逻辑方面遇到了困难,但是,如今,您可以通过一个方法调用、碰撞器和精灵来制作一个简单的双人Pong游戏。一旦决定制作单人Pong游戏,Pong的制作难度就会增加。在本教程中,我们将创建Pong的基本游戏玩法,并分解一个非常简单的AI替代方案,该方案仍然增加了游戏价值。

我们必须问,Pong游戏玩法的核心要素是什么?以下是对此问题的答案列表:

  1. 玩家输入 – 我们希望玩家能够上下移动他们的球拍以便击球。
  2. 球碰撞 – 当球击中球拍或边界时,不允许其损失任何速度。
  3. 边界碰撞 – 球必须能够从屏幕的顶部和底部反弹,这样它就不会离开游戏区域。
  4. 敌人AI – 如果敌人坐在屏幕的另一端并且不移动,则游戏的可玩性几乎为零。
  5. 生成球 – 当球击中球拍后面的边界之一时,我们需要它重新生成,以便我们可以继续游戏。
  6. 球到球拍的碰撞区域检测 – 这允许球以独特的角度从球拍上反弹,以便我们能够在用球拍击球时更好地瞄准球。

有了这个列表,我们就可以开始编写游戏程序了。

请注意,任何与游戏对象的位置、旋转、缩放等相关的数字都是相对的,可能需要根据您的特定设置进行更改。

设置游戏

既然我们已经分析了Pong的基本原理,我们就可以开始设置游戏了。打开Unity并创建一个新的2D项目。编辑器打开后,将游戏屏幕的纵横比设置为4:3。我们使用4:3是因为这是最常见的屏幕比例之一,并且是最接近标准比例的比例之一。在“资源”面板中,创建四个名为“脚本”、“精灵”、“预制件”和“材质”的文件夹。这些文件夹将用于保存我们所有的游戏资源。

Retro Revolution: Building a Pong Clone in Unity

下载游戏所需图像并将其添加到“精灵”文件夹(可以通过拖放操作完成)。我们刚刚添加的图像将是游戏中使用的精灵(交互式游戏对象)。

Retro Revolution: Building a Pong Clone in Unity Retro Revolution: Building a Pong Clone in Unity Retro Revolution: Building a Pong Clone in Unity

我们需要更改精灵的每像素单位,以便它们符合标准。我通常使用每像素单位64个像素,因为这会使大多数精灵看起来清晰干净,并保持其相对大小。您可以将每像素单位视为在Unity编辑器中分配在1×1空间中的像素密度。

让我们将正方形的每像素单位设置为64,并将圆形的每像素单位设置为128。我们可以继续将这三个图像添加到层次结构面板中。

Retro Revolution: Building a Pong Clone in Unity

现在我们需要为每个资源命名并设置它们的初始属性和标签。您可以将蓝色块命名为“Player”,并将玩家的x位置设置为6,其x缩放比例设置为0.2。

我们需要创建一个标签来将球拍游戏对象与其他游戏对象分开。从广义上讲,您可以将标签视为游戏对象的类别。单击“未标记”(位于玩家名称下)并选择“添加标签”。创建一个名为“Paddle”的新标签,重新选择玩家游戏对象并将它的标签设置为Paddle。

将红色块命名为“Enemy”。将敌人的x位置设置为-6,其x缩放比例设置为0.2。使敌人游戏对象的标签为Paddle。

将灰色圆圈命名为“Ball”,然后创建一个名为“Ball”的新标签。确保将球游戏对象的标签设置为Ball。

(以下步骤,由于篇幅限制,仅提供步骤概述和关键代码片段,详细代码请参考原文或自行补充)

添加玩家输入

创建一个名为“PlayerController”的C#脚本,并添加以下代码(控制玩家球拍的移动):

public float speed = 10;
public float topBound = 4.5F;
public float bottomBound = -4.5F;

void FixedUpdate () {
    float movementSpeedY = speed * Input.GetAxis("Vertical") * Time.deltaTime;
    transform.Translate(0, movementSpeedY, 0);
    // ... (边界限制代码)
}

球碰撞

创建一个名为“Bounce”的Physics2D材质,设置其弹性为1,摩擦力为0。将Circle Collider 2D和Rigidbody 2D添加到Ball游戏对象,并将材质设置为“Bounce”。

边界碰撞

创建四个空游戏对象作为边界(LeftBound, RightBound, TopBound, BottomBound),添加Box Collider 2D并设置其属性。创建一个名为“BoundController”的脚本,用于检测球与边界碰撞并销毁球。

敌人AI

创建一个名为“EnemyController”的脚本,控制敌人的球拍移动,使其跟随球。

public float speed = 1.75F;
Transform ball;
Rigidbody2D ballRig2D;

void FixedUpdate () {
    ball = GameObject.FindGameObjectWithTag("Ball").transform;
    ballRig2D = ball.GetComponent<Rigidbody2D>();
    // ... (根据球的位置移动敌人的代码)
}

生成球

创建一个空游戏对象“BallSpawner”,并创建一个名为“BallSpawnerController”的脚本,用于在球消失时重新生成球。

添加基本文本

创建一个UI Text对象,显示游戏说明。

结论

您现在已经在Unity2D中成功创建了一个基本的单人Pong克隆。为了获得更多练习,尝试思考改进游戏的方法——例如,为球添加加速度(击球次数越多,球的速度越快)、为球拍添加惯性、通过增加敌人的速度来添加难度级别等等。

(FAQ部分由于篇幅过长,此处省略。原文已包含详细的FAQ解答)

以上是复古革命:建立一个统一的乒乓球的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
21个开发人员新闻通讯将在2025年订阅21个开发人员新闻通讯将在2025年订阅Apr 24, 2025 am 08:28 AM

与这些顶级开发人员新闻通讯有关最新技术趋势的了解! 这个精选的清单为每个人提供了一些东西,从AI爱好者到经验丰富的后端和前端开发人员。 选择您的收藏夹并节省时间搜索REL

使用AWS ECS和LAMBDA的无服务器图像处理管道使用AWS ECS和LAMBDA的无服务器图像处理管道Apr 18, 2025 am 08:28 AM

该教程通过使用AWS服务来指导您通过构建无服务器图像处理管道。 我们将创建一个部署在ECS Fargate群集上的next.js前端,与API网关,Lambda函数,S3桶和DynamoDB进行交互。 Th

CNCF ARM64飞行员:影响和见解CNCF ARM64飞行员:影响和见解Apr 15, 2025 am 08:27 AM

该试点程序是CNCF(云本机计算基础),安培计算,Equinix金属和驱动的合作,简化了CNCF GitHub项目的ARM64 CI/CD。 该计划解决了安全问题和绩效

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

SecLists

SecLists

SecLists是最终安全测试人员的伙伴。它是一个包含各种类型列表的集合,这些列表在安全评估过程中经常使用,都在一个地方。SecLists通过方便地提供安全测试人员可能需要的所有列表,帮助提高安全测试的效率和生产力。列表类型包括用户名、密码、URL、模糊测试有效载荷、敏感数据模式、Web shell等等。测试人员只需将此存储库拉到新的测试机上,他就可以访问到所需的每种类型的列表。

SublimeText3 英文版

SublimeText3 英文版

推荐:为Win版本,支持代码提示!

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器