>本教程增强了建立在团结的基本基本克隆,添加了经典的两个美学,改进的游戏机制和复古风格的UI。 让我们升级我们的乒乓球!
>第2部分:Retro Revamp&Enhanced Gameplay
>>本教程建立在先前的乒乓球上。 从Github下载项目或在继续之前完成第1部分。 还可以使用工作的演示和最终改进的游戏。
>密钥改进:
- 经典样式:进口黑色和白色精灵,对真实复古视觉效果调整单位像素(至64)。将主摄像头背景更改为黑色,并相应地更新桨和球精灵。使用多个缩放的白色精灵创建一个中央分隔线。
-
增强的碰撞:完善球碰撞处理以计算桨的冲击角度,从而使弹跳更加现实。 这涉及更新
BallController
脚本的OnCollisionEnter2D
方法以使用launchAngle
>函数。请记住适当地标记玩家和敌人桨。 -
改善了敌人的AI:
使用基于时间的计算,增强响应能力和挑战。修改 脚本以使用EnemyController
,调整速度和时机以获得最佳平滑度。 添加边界以防止AI桨在屏幕上脱离。InvokeRepeating("Move", .02F, .02F)
脚本应在销毁球后重置敌方桨的位置。BoundsController
复古暂停菜单: - 使用自定义像素字体(如丝线屏幕)创建暂停菜单。包括具有适当功能的“重置”和“主菜单”按钮。 >脚本管理暂停和恢复,并显示/隐藏暂停菜单元素。 确保用“ Showonpause”标记暂停菜单元素。>
UIManager
> >动态主菜单: - 在后台设计带有模拟AI游戏的主菜单。 复制主游戏场景,删除不必要的元素,并添加标题和“播放”按钮。使用>和脚本(类似于敌人AI,但对速度和时机进行调整)来控制主菜单中的AI桨。
AutoPlayer
>AutoEnemy
评分系统: 实现一个跟踪播放器和AI得分的评分系统,在UI上显示它们(使用 - >脚本显示获胜者。 切记用“ showonfinish”元素标记游戏。
PointCounter
GameOver
代码片段:
(ballcontroller.cs- oncollisionEnter2d&启动angle)
void OnCollisionEnter2D(Collision2D col) { if (col.gameObject.tag == "Enemy") { float y = launchAngle(transform.position, col.transform.position, col.collider.bounds.size.y); Vector2 d = new Vector2(1, y).normalized; rig2D.velocity = d * speed * 1.5F; } if (col.gameObject.tag == "Player") { float y = launchAngle(transform.position, col.transform.position, col.collider.bounds.size.y); Vector2 d = new Vector2(-1, y).normalized; rig2D.velocity = d * speed * 1.5F; } } float launchAngle(Vector2 ball, Vector2 paddle, float paddleHeight) { return (ball.y - paddle.y) / paddleHeight; }
(eneycontroller.cs-移动)
void Move() { if (ball == null) { ball = GameObject.FindGameObjectWithTag("Ball").transform; } ballRig2D = ball.GetComponent<Rigidbody2D>(); if (ballRig2D.velocity.x > 0) { if (ball.position.y > this.transform.position.y + .5F) { transform.Translate(Vector3.up * speed * Time.deltaTime); } else if (ball.position.y < this.transform.position.y - .5F) { transform.Translate(Vector3.down * speed * Time.deltaTime); } } // ... bounds checking ... }
(uimanager.cs- partial)
// ... other methods ... public void showFinished() { foreach (GameObject g in finishObjects) { g.SetActive(true); } } // ... other methods ...
void Update () { text.text = rightBound.GetComponent<BoundController>().enemyScore + "\t\t" + leftBound.GetComponent<BoundController>().playerScore; }
(gameover.cs)
>void Update () { if(uiManager.playerWon){ text.text = "GAME OVER!\nPLAYER WON!"; } else if(uiManager.enemyWon){ text.text = "GAME OVER!\nENEMY WON!"; } }
记住在AI脚本中调整速度和计时等值以微调游戏难度。 这种增强的乒乓球可提供更完整,更具吸引力的复古游戏体验。 GitHub链接(输入中未提供)将包含完整的项目文件。
以上是建立UI和游戏玩法的乒乓球克隆的详细内容。更多信息请关注PHP中文网其他相关文章!

定制电信软件开发无疑是一项相当大的投资。然而,从长远来看,您可能会意识到,这样的项目可能更具成本效益,因为它可以像市场上任何现成的解决方案一样提高您的生产力。了解构建定制电信系统的最重要优势。 获取您所需的确切功能 您可以购买的现成电信软件有两个潜在问题。有些缺乏可能显着改善您工作效率的有用功能。有时您可以通过一些外部集成来增强它们,但这并不总是足以使它们变得出色。 其他软件功能过多,使用起来过于复杂。您可能不会使用其中的一些(永远不会!)。大量的功能通常还会增加价格。 基于您的需求

Arm64 架构开源软件的 CI/CD 难题与解决方案 在 Arm64 架构上部署开源软件需要一个强大的 CI/CD 环境。然而,Arm64 和传统 x86 处理器架构的支持水平之间存在差异,Arm64 通常处于劣势。面向多种架构的基础设施组件开发人员对工作环境有一定的期望: 一致性:跨平台使用的工具和方法保持一致,避免因采用不太流行的平台而需要改变开发流程。 性能:平台和支持机制具有良好的性能,确保在支持多个平台时部署方案不会因速度不足而受影响。 测试覆盖率:对所有平台同时进行效率、合规性和

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

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

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


热AI工具

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

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

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

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

热门文章

热工具

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

禅工作室 13.0.1
功能强大的PHP集成开发环境

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

螳螂BT
Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

VSCode Windows 64位 下载
微软推出的免费、功能强大的一款IDE编辑器