搜索
首页科技周边IT业界建立UI和游戏玩法的乒乓球克隆

>本教程增强了建立在团结的基本基本克隆,添加了经典的两个美学,改进的游戏机制和复古风格的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上显示它们(使用脚本),并在得分限制时结束游戏(例如,7分达到),在屏幕上显示游戏。
  • >脚本显示获胜者。 切记用“ showonfinish”元素标记游戏。 PointCounterGameOver

代码片段:Building a Pong Clone in Unity: UI and Gameplay

(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中文网其他相关文章!

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
定制电信软件的好处定制电信软件的好处May 11, 2025 am 08:28 AM

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

CNCF触发了ARM64和X86的平台平等突破CNCF触发了ARM64和X86的平台平等突破May 11, 2025 am 08:27 AM

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

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

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

热门文章

热工具

SublimeText3 英文版

SublimeText3 英文版

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

禅工作室 13.0.1

禅工作室 13.0.1

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

SecLists

SecLists

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

螳螂BT

螳螂BT

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

VSCode Windows 64位 下载

VSCode Windows 64位 下载

微软推出的免费、功能强大的一款IDE编辑器