在开始之前,您可以在itch.io上查看游戏
核心要点
Pong游戏分析
Pong是最早的电子游戏之一,也是第一个成功的商业游戏。当Pong首次创建时,开发人员很可能在代码逻辑方面遇到了困难,但是,如今,您可以通过一个方法调用、碰撞器和精灵来制作一个简单的双人Pong游戏。一旦决定制作单人Pong游戏,Pong的制作难度就会增加。在本教程中,我们将创建Pong的基本游戏玩法,并分解一个非常简单的AI替代方案,该方案仍然增加了游戏价值。
我们必须问,Pong游戏玩法的核心要素是什么?以下是对此问题的答案列表:
有了这个列表,我们就可以开始编写游戏程序了。
请注意,任何与游戏对象的位置、旋转、缩放等相关的数字都是相对的,可能需要根据您的特定设置进行更改。
设置游戏
既然我们已经分析了Pong的基本原理,我们就可以开始设置游戏了。打开Unity并创建一个新的2D项目。编辑器打开后,将游戏屏幕的纵横比设置为4:3。我们使用4:3是因为这是最常见的屏幕比例之一,并且是最接近标准比例的比例之一。在“资源”面板中,创建四个名为“脚本”、“精灵”、“预制件”和“材质”的文件夹。这些文件夹将用于保存我们所有的游戏资源。
下载游戏所需图像并将其添加到“精灵”文件夹(可以通过拖放操作完成)。我们刚刚添加的图像将是游戏中使用的精灵(交互式游戏对象)。
我们需要更改精灵的每像素单位,以便它们符合标准。我通常使用每像素单位64个像素,因为这会使大多数精灵看起来清晰干净,并保持其相对大小。您可以将每像素单位视为在Unity编辑器中分配在1×1空间中的像素密度。
让我们将正方形的每像素单位设置为64,并将圆形的每像素单位设置为128。我们可以继续将这三个图像添加到层次结构面板中。
现在我们需要为每个资源命名并设置它们的初始属性和标签。您可以将蓝色块命名为“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中文网其他相关文章!