Unity开发简单2D平台跳跃游戏教程

一、前期准备

(一)安装Unity

1. 访问Unity官方网站(https://unity.com/),点击“Get started”下载Unity Hub。

2. 运行下载的安装程序,按照提示完成Unity Hub的安装。

3. 打开Unity Hub,在“Installs”选项卡中点击“Add”,选择需要安装的Unity版本及组件(建议勾选常用平台的构建支持,如Windows、Android等),开始安装Unity编辑器。

(二)准备资源

1. 美术资源:可在网上搜索免费的2D游戏素材,像Kenney.nl等网站提供大量公共领域素材,包含角色、平台、金币等。也能使用图形设计软件自制简单图形。

2. 音频资源:从FreeMusicArchive等网站获取免费音效和背景音乐,用于游戏的跳跃音效、收集金币音效等 。

二、创建项目

1. 打开Unity Hub,点击“New Project”。

2. 在弹出窗口中,项目模板选择“2D”,设置项目名称和存储位置,点击“Create”创建新的2D项目。

三、搭建游戏场景

(一)导入资源

1. 将下载或自制的美术和音频资源文件夹直接拖放到Unity项目的“Project”面板中。

2. 若导入的图片资源需作为2D精灵使用,选中图片,在“Inspector”面板中确保“Texture Type”设置为“Sprite (2D and UI)”。

(二)创建地面和平台

1. 在“Hierarchy”面板中右键点击,选择“2D Object” - “Tilemap” - “Tilemap”,创建一个Tilemap对象,用于绘制地面和平台。

2. 在“Project”面板中找到用于地面和平台的精灵素材,将其拖到“Tile Palette”面板中创建Tile。

3. 选中Tilemap对象,使用“Tile Palette”中的画笔工具,在“Scene”视图中绘制游戏场景的地面和平台。

(三)添加角色

1. 在“Hierarchy”面板中右键点击,选择“2D Object” - “Sprite”,创建一个新的精灵对象作为游戏角色。

2. 在“Project”面板中选择角色的精灵素材,拖到新创建的精灵对象上。

3. 调整角色的位置和大小,使其位于地面上方合适位置。

四、编写角色控制脚本

1. 在“Project”面板中右键点击,选择“Create” - “C# Script”,创建一个新的C#脚本,命名为“PlayerController”。

2. 双击打开脚本,编写以下代码:
using UnityEngine;

public class PlayerController : MonoBehaviour
{
    public float speed = 5f;
    public float jumpForce = 10f;
    private Rigidbody2D rb;
    private bool isGrounded;

    void Start()
    {
        rb = GetComponent<Rigidbody2D>();
    }

    void Update()
    {
        // 水平移动
        float moveHorizontal = Input.GetAxis("Horizontal");
        Vector2 movement = new Vector2(moveHorizontal, 0f);
        rb.velocity = new Vector2(movement.x * speed, rb.velocity.y);

        // 跳跃
        if (Input.GetButtonDown("Jump") && isGrounded)
        {
            rb.AddForce(new Vector2(0f, jumpForce), ForceMode2D.Impulse);
            isGrounded = false;
        }
    }

    void OnCollisionEnter2D(Collision2D collision)
    {
        if (collision.gameObject.CompareTag("Ground"))
        {
            isGrounded = true;
        }
    }
}
3. 将编写好的“PlayerController”脚本拖到“Hierarchy”面板中的角色对象上,完成角色控制功能的添加。

五、实现金币收集系统

(一)创建金币对象

1. 在“Hierarchy”面板中右键点击,选择“2D Object” - “Sprite”,创建一个新的精灵对象作为金币。

2. 选择金币的精灵素材,拖到新创建的精灵对象上,并调整其位置和大小。

3. 为金币对象添加“Circle Collider 2D”组件,用于碰撞检测。

(二)编写金币收集脚本

1. 创建一个新的C#脚本,命名为“CoinCollector”。

2. 编写以下代码:
using UnityEngine;

public class CoinCollector : MonoBehaviour
{
    private void OnTriggerEnter2D(Collider2D other)
    {
        if (other.CompareTag("Player"))
        {
            // 播放收集金币音效
            // 这里假设已经将音效资源导入并挂载在AudioSource组件上
            // 可以根据实际情况修改音效播放逻辑
            AudioSource audioSource = GetComponent<AudioSource>();
            audioSource.Play();

            Destroy(gameObject);
        }
    }
}
3. 将“CoinCollector”脚本拖到金币对象上,并为金币对象添加“Box Collider 2D”组件,设置为“Is Trigger”,使角色接触金币时触发收集事件。

六、添加用户界面(UI)

(一)显示金币数量

1. 在“Hierarchy”面板中右键点击,选择“UI” - “Text”,创建一个文本对象用于显示金币数量。

2. 在“Inspector”面板中调整文本的字体、大小、颜色和位置。

3. 创建一个新的C#脚本,命名为“CoinCounter”,用于更新金币数量的显示:
using UnityEngine;
using UnityEngine.UI;

public class CoinCounter : MonoBehaviour
{
    public int coinCount = 0;
    public Text coinText;

    void Start()
    {
        UpdateCoinText();
    }

    public void IncreaseCoinCount()
    {
        coinCount++;
        UpdateCoinText();
    }

    void UpdateCoinText()
    {
        coinText.text = "Coins: " + coinCount.ToString();
    }
}
4. 将“CoinCounter”脚本拖到一个空的游戏对象上,在“Inspector”面板中,将创建的文本对象赋值给“Coin Text”字段。

5. 回到“CoinCollector”脚本,在“OnTriggerEnter2D”方法中添加增加金币数量的代码:
using UnityEngine;

public class CoinCollector : MonoBehaviour
{
    private void OnTriggerEnter2D(Collider2D other)
    {
        if (other.CompareTag("Player"))
        {
            // 播放收集金币音效
            AudioSource audioSource = GetComponent<AudioSource>();
            audioSource.Play();

            // 增加金币数量显示
            CoinCounter coinCounter = FindObjectOfType<CoinCounter>();
            if (coinCounter != null)
            {
                coinCounter.IncreaseCoinCount();
            }

            Destroy(gameObject);
        }
    }
}
(二)添加暂停功能

1. 在“Hierarchy”面板中右键点击,选择“UI” - “Button”,创建一个暂停按钮。

2. 在“Inspector”面板中调整按钮的大小、位置和文本显示。

3. 创建一个新的C#脚本,命名为“PauseMenu”,用于实现暂停功能:
using UnityEngine;
using UnityEngine.UI;

public class PauseMenu : MonoBehaviour
{
    public GameObject pauseMenuUI;
    private bool isPaused = false;

    void Update()
    {
        if (Input.GetKeyDown(KeyCode.Escape))
        {
            if (isPaused)
            {
                Resume();
            }
            else
            {
                Pause();
            }
        }
    }

    public void Resume()
    {
        pauseMenuUI.SetActive(false);
        Time.timeScale = 1f;
        isPaused = false;
    }

    void Pause()
    {
        pauseMenuUI.SetActive(true);
        Time.timeScale = 0f;
        isPaused = true;
    }

    public void QuitGame()
    {
        Application.Quit();
    }
}
4. 将“PauseMenu”脚本拖到一个空的游戏对象上,在“Inspector”面板中,将创建的暂停菜单UI对象赋值给“Pause Menu UI”字段。

5. 选中暂停按钮,在“On Click()”事件中,将挂载“PauseMenu”脚本的对象拖入,选择“PauseMenu.Pause”方法,使点击按钮时触发暂停功能。

七、构建与测试

1. 在Unity编辑器中,点击“File” - “Build Settings”。

2. 在“Build Settings”窗口中,选择目标平台(如Windows、Android等),点击“Build”按钮,选择存储路径,生成游戏安装包。

3. 运行生成的游戏安装包,测试游戏功能是否正常,包括角色移动、跳跃、金币收集、暂停功能等,检查是否存在漏洞或异常情况,如有问题返回Unity编辑器进行调试修改。