Unity 3D 实现拾取物品功能(一)

Unity 3D 实现拾取物品功能(一)


刚刚接触Unity不久,为了记录自己学习的过程。我决定写写博客,哈哈哈。

在网上看了一些拾取物品的实现原理之后,自己摸索了一下,写了个小Demo,下面来介绍一下基本功能。

1)人物靠近物体,且视角朝向物体,改变物体颜色。
2)按E键拾取物品到背包,并销毁游戏对象。
3)按B键在背包中显示已有物品。

一般背包设定分为格子上限和负重上限两种,在这个Demo里我们使用格子上限的模式。且物品分为可叠加和不可叠加两种。

首先,来预览一下成果。
在游戏场景中建立这么一些游戏对象,来模拟游戏里的真实物品。
游戏场景

然后我们操作角色,移动到物体前。然后镜头指向游戏想,把默认颜色修改为红色。
物品颜色变更

一般游戏都使用E键拾取物品,我也使用E键拾取。拾取成功后,我们就使用Destroy()函数,销毁游戏对象。从而达到物品被加入背包的感觉。
我们把ObjectItem挂到物体上,然后设置属性。
方块1数量为685,可叠加,最大叠加数量为1000。
方块2数量为888,可叠加,最大叠加数量为1000。
相同物品的判断使用ObjId字段,所以同类物品就设置ObjId一致就可以了。
这里写图片描述

拾取以上两个方块后,按下B键,调用显示物品的函数,暂时显示到Debug控制台中。在后续的博客中再继续完善。
这里写图片描述
我们就可以看到,物品栏就有了两条记录。

然后设置两个圆柱个数都为1,且不可叠加。拾取后按B键,查看控制台
这里写图片描述
就可以看到柱子的数量分别存在的单独的格子。

把背包和物品属性抽象,形成两个类。Pack.cs和ObjectItem.cs

Pack.cs代码如下:

using UnityEngine;
using System.Collections;
using System.Collections.Generic;

public class Pack : MonoBehaviour {
    //保存物品的List数组
    public List<ItemEntity> items = null;
    //背包最大容量
    public int maxItem = 32;

    // Use this for initialization
    void Start () {
        items = new List<ItemEntity>();
    }

    //拾取物品
    public ObjectItem getItem(ObjectItem item)
    {
        //使用中间过渡的实体类
        ItemEntity itemEntity = ItemEntity.FillData(item);

        
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值