Skip to content
编程开物
编程开物

一段代码,一段Prompt,一物成型。 探索编程、AI应用、架构设计与产品设计,分享工程实践,记录技术学习、工作总结与产品创造。

  • 首页
  • 编程基础
  • 数据与AI
    • 数据工程
    • AI基础理论
    • AI实践应用
  • 系统架构
    • 传统应用架构设计
    • AI应用架构设计
  • 项目管理
  • 产品设计
  • 技术教程
  • 行业动态
  • 编程笔记
  • 实用技巧
  • 关于我
编程开物

一段代码,一段Prompt,一物成型。 探索编程、AI应用、架构设计与产品设计,分享工程实践,记录技术学习、工作总结与产品创造。

《Unity入门实战》0007 – 第一个 Unity C# 脚本:控制 2D 小球移动与跳跃

编码者, 2025年6月13日2025年6月13日

本文将创建一个简单的 Unity 项目,使一个 2D 小球可以通过键盘输入实现左右移动和跳跃功能。非常适合初学者了解物理引擎、输入检测以及 Unity 脚本编写的基本用法。


🔄 最终效果

  • 一个 2D 小球可以通过键盘 A/D 或方向键 ←/→ 左右移动。
  • 按下空格键,球会向上跳跃。
  • 所有的运动与跳跃行为都由自定义的 C# 脚本控制。

🎨 第一步 – 创建场景

创建小球的 2D 精灵:

  1. 在 Unity 的 Hierarchy 中右键 → 选择 2D Object → Sprite → Circle,命名为 Ball。
  2. 给 Ball 添加 Rigidbody2D 和 CircleCollider2D 组件。

创建地面对象:

  1. 再次右键 → 2D Object → Sprite → Square,分别命名为 VGround 和 HGround。
  2. 将其拉宽并放置在场景底部作为地面。
  3. 添加 BoxCollider2D 组件使其具有碰撞属性。

参考上一篇文章了解细节:[Unity 实践教程 0004 – Unity Rigidbody – Wonderful Code See]


💻 第二步 – 编写移动与跳跃脚本

创建脚本 BallScript.cs:

  1. 创建新的 C# 脚本 BallScript.cs。
  2. 将其挂载到 Ball 游戏对象上。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class BallScript : MonoBehaviour
{

    public Rigidbody2D rb;

    public float moveSpeed;
    public float jumpForce;

    private float xInput;

    // Start is called before the first frame update
    void Start()
    {
    }

    // Update is called once per frame
    void Update()
    {
        // Get horizontal input
        xInput = Input.GetAxis("Horizontal");

        // Apply horizontal movement
        rb.velocity = new Vector2(xInput * moveSpeed, rb.velocity.y);


        // Jump on Space key press
        if (Input.GetKeyDown(KeyCode.Space))
        {
            rb.velocity = new Vector2(rb.velocity.x, jumpForce);
        }
    }
}

🛠 第三步 – 在 Inspector 设置引用

  • 将 Ball 游戏对象拖动到脚本中 rb 字段的位置。

▶️ 第四步 – 运行场景

点击 Play 按钮,使用键盘:

  • 按下 A/D 或 ←/→ 让小球左右移动。
  • 按下空格键,小球会跳起来(前提是它在地面上)。

✅ 总结

你已经实现了一个简单但功能完整的 2D 小球移动和跳跃系统。这为开发横版平台游戏、侧滚类游戏或物理实验项目打下了良好的基础。


🧠 进阶:逐行代码详解

xInput = Input.GetAxis("Horizontal");
  • 目的:读取玩家的水平输入。
  • 工作原理:
    • Unity 内置的 “Horizontal” 轴映射如下:
      • A 或 ←:返回 -1
      • D 或 →:返回 +1
      • 没有按键:返回 0
    • 同时会自动进行加速/减速的平滑处理。
  • 结果:xInput 是一个 -1 到 1 之间的浮点数,表示输入方向与强度。

rb.velocity = new Vector2(xInput * moveSpeed, rb.velocity.y);
  • 目的:让小球在水平方向移动。
  • 解释:
    • rb 是关联的 Rigidbody2D 组件。
    • rb.velocity 设置对象当前速度。
    • new Vector2(...) 创建一个二维速度向量。
  • 细节:
    • xInput * moveSpeed 决定 X 轴的速度。
      • 例如:xInput=1 且 moveSpeed=5,则速度为向右 5。
    • rb.velocity.y 保留 Y 方向原有速度(如跳跃或重力)。
  • 结果:小球左右移动时不影响垂直方向。

if (Input.GetKeyDown(KeyCode.Space))
  • 目的:检测是否按下了空格键。
  • 区别:
    • GetKeyDown:只在按下键的第一帧返回 true。
    • GetKey:在按住键时每一帧都返回 true。
    • GetKeyUp:在释放按键时返回 true。
  • 用途:适合用来触发“只跳一次”的跳跃操作。

rb.velocity = new Vector2(rb.velocity.x, jumpForce);
  • 目的:通过设置垂直速度使小球跳跃。
  • 解释:
    • rb.velocity.x 保留水平方向移动。
    • jumpForce(通常是正值)决定跳跃高度。
  • 注意:这段代码没有检测小球是否在地面上,因此会出现“无限跳跃”问题。要解决这个问题,需要加入地面检测逻辑。
Post Views: 1,029
编程笔记 Unity C#Unity开发游戏开发

文章导航

Previous post
Next post

发表回复 取消回复

您的邮箱地址不会被公开。 必填项已用 * 标注

站内搜索

微信公众号

广告赞助

近期文章

  • 斯坦福 STORM 学习法:用 AI 深度研究一个主题,构建自己的知识体系
  • 如何使用 Claude 将任何知识的学习速度提升 10 倍【译】
  • Excel 根据数值正负自动设置文字颜色:正数红色、负数绿色
  • 2026 年主流跨端开发框架:Flutter、React Native、KMP 怎么选?
  • 2026 年企业级编程技术栈趋势简报
  • 使用 Jev 构建 Harness [译]
  • 2026年FDE(前沿部署工程师)为什么成了香饽饽?
  • 第 7 章 Tool System:给 AI 装上”手和脚”
  • 第 6 章 Context Engineering:Agent 的”工作内存”
  • 第 5 章 主流 AI Agent 架构模式

近期评论

  • 《AI Agent 架构设计与工程实践指南》——从 LLM、Agent、Harness 到 Mini Claude Code - 编程开物 发表在《第 3 章 AI Agent Loop:现代 AI Agent 背后的核心架构》
  • 《AI Agent 架构设计与工程实践指南》——从 LLM、Agent、Harness 到 Mini Claude Code - 编程开物 发表在《第 4 章 Agent Harness是什么?》
  • 第 4 章 Agent Harness是什么? - 编程开物 发表在《《AI Agent 架构设计与工程实践指南》——从 LLM、Agent、Harness 到 Mini Claude Code》
  • 《AI Agent 架构设计与工程实践指南》——从 LLM、Agent、Harness 到 Mini Claude Code - 编程开物 发表在《第 2 章 LLM Application 的基本架构》
  • 《AI Agent 架构设计与工程实践指南》——从 LLM、Agent、Harness 到 Mini Claude Code - 编程开物 发表在《第 1 章 重新认识 AI Agent》

归档

  • 2026 年 10 月 (2)
  • 2026 年 9 月 (14)
  • 2025 年 8 月 (1)
  • 2025 年 7 月 (1)
  • 2025 年 6 月 (10)
  • 2025 年 5 月 (10)
  • 2025 年 4 月 (5)
  • 2025 年 2 月 (1)
  • 2024 年 12 月 (4)
  • 2024 年 11 月 (7)
  • 2024 年 9 月 (1)
  • 2024 年 8 月 (4)
  • 2024 年 7 月 (1)
  • 2024 年 2 月 (1)
  • 2023 年 12 月 (3)
  • 2023 年 11 月 (6)
  • 2023 年 10 月 (4)
  • 2023 年 9 月 (2)
  • 2023 年 8 月 (38)
  • 2022 年 2 月 (1)
  • 2022 年 1 月 (13)
  • 2021 年 1 月 (1)
  • 2020 年 10 月 (1)
  • 2020 年 1 月 (1)
  • 2014 年 7 月 (2)

分类

  • IT项目管理 (2)
  • 实用技巧 (3)
  • 技术教程 (8)
  • 数据与AI (12)
    • AI基础理论 (1)
    • AI实践应用 (2)
    • 数据工程 (3)
  • 架构设计 (13)
    • AI应用架构设计 (8)
    • 传统应用架构设计 (2)
  • 编程基础 (2)
  • 编程笔记 (88)
  • 行业动态 (19)
©2026 编程开物 | WordPress Theme by SuperbThemes | 沪ICP备17019044号-3