Unity 中没有库存的分拣系统

在本教程中,我们将在 Unity 中创建一个简单的拾取系统,而不使用库存系统。该系统将允许玩家从环境中拾取物体并将其放置在不同的位置。

先决条件

  • Unity 集线器已安装
  • Unity 编辑器(2019版或更高版本)
  • C#基础知识

设置项目

  1. 打开 Unity Hub 并创建一个新的 Unity 项目。
  2. 使用玩家角色和一些要交互的对象设置场景。

实施拣选和投放系统

第 1 步:创建代答脚本

using UnityEngine;

public class Pickup : MonoBehaviour
{
    private Transform heldObject;
    private Vector3 offset;

    void Update()
    {
        if (heldObject != null)
        {
            MoveHeldObject();
            CheckDrop();
        }
        else
        {
            CheckPickup();
        }
    }

    void MoveHeldObject()
    {
        Vector3 mousePosition = Camera.main.ScreenToWorldPoint(Input.mousePosition);
        heldObject.position = new Vector3(mousePosition.x + offset.x, mousePosition.y + offset.y, 0);
    }

    void CheckPickup()
    {
        if (Input.GetMouseButtonDown(0))
        {
            RaycastHit2D hit = Physics2D.Raycast(Camera.main.ScreenToWorldPoint(Input.mousePosition), Vector2.zero);
            if (hit.collider != null && hit.collider.CompareTag("Pickup"))
            {
                heldObject = hit.transform;
                offset = heldObject.position - Camera.main.ScreenToWorldPoint(Input.mousePosition);
            }
        }
    }

    void CheckDrop()
    {
        if (Input.GetMouseButtonDown(1))
        {
            heldObject = null;
        }
    }
}

步骤 2:为拾取对象添加标签

使用标签 "Pickup" 标记您希望玩家能够拾取的物体。

  1. 选择场景中的一个对象。
  2. 在检查器窗口中,单击 "Tag" 下拉列表。
  3. 选择 "Add Tag" 并输入 "Pickup"。
  4. 将标签应用到对象。

第 3 步:测试系统

  1. 将一些带有 "Pickup" 标签的对象添加到场景中。
  2. 播放 Unity 中的场景。
  3. 单击标记的对象将其拾取。
  4. 右键单击可放下所持有的物体。

结论

您已成功实现了一个简单的取放系统,而无需使用 Unity 中的库存。该系统允许玩家通过拾取物体并将其放置在不同位置来与场景中的物体进行交互。您可以通过添加对象捕捉、对象旋转或更复杂的交互等功能来随意扩展该系统。

推荐文章
受 Poppy Playtime 启发,在 Unity 中创建 GrabPack
在 Unity 中创建子弹时间效果
在 Unity 中创建交互式对象
在 Unity 中实现动力学交互
在 Unity 中使用特定钥匙打开抽屉和橱柜
在 Unity 中添加玩家进入汽车
在 Unity 中使用运行时动画控制器