unity3D游戏开发实战(四)——使用道具与密码锁

改进

对话代码

之前的对白显示代码有一点小问题,需要稍作修改。

        if (Time.time - instantiateTime >= continueTime && !spanning)
            disappearing = true;

如图所示,之前是没有spanning的判定条件的,这会导致脚本不断把disappear值设为真,导致后续对话无法显示。

鼠标指针

在游戏中,我们用准星来代替鼠标指针,所以我们需要隐藏指针并将其锁定,在角色移动代码的Start函数中加入如下两行代码:

        Cursor.visible = false;
        Cursor.lockState = CursorLockMode.Locked;

当然,为了方便测试,我们在测试过程中会暂时将这两行代码注释掉。

获得当前道具

有时我们需要获得当前道具编号,但是getItem函数存在一种特殊情况——当前没有任何道具,按照我们之前编写的代码,会造成indexOut类型的error,所以我们要稍加修改:

    public int GetItem()
    {
   
        if (items.Count == 0)
            return 0;
        return items[num];
    }

完成喷泉房间

置物架

上一次我们已经编写好了交互物体的脚本,这次我们直接将脚本拖动到需要互动的物体上即可。
首先是置物架,我们将脚本添加后修改参数如下:
在这里插入图片描述
值得注意的是,由于shelf本身是一个用来容纳各个组件的空物体,所以我们要手动添加Collider,才能让它被Raycast检测到,同时要修改其tag为Untouched。
之后我们要为架子上的部分物体添加玻璃材质,新建material,设置参数如下:
在这里插入图片描述
注意,一定要修改渲染模式为Fade,不然无法实现透明效果。
将材质赋予架子上的部分物体后,我们进入游戏检查一下:
在这里插入图片描述
我们如愿以偿得到了道具,点亮了灯光,并让特殊的玻璃杯消失,也出现了对白,置物架的实例摆放宣告成功。

喷泉

话不多说,先放上参数图:
在这里插入图片描述
如图,交互后出现的三个灯光分别是喷泉的有阴影灯光,无阴影灯光,以及隔壁房间保险柜的照明灯光。
另外因为喷泉下子物体的collider会影响射线检测,所以我们需要将子物体的collider移动到spring物体下。
喷泉灯光效果如下:
在这里插入图片描述
之后我们进入游戏看一看实际效果:
在这里插入图片描述
在这里插入图片描述
实际效果很成功,但是我们会发现一个问题——道具栏中的道具只有一个时,没有自动填充满,我们需要稍作修改。

道具添加代码修改

打开Item脚本的AddItem函数部分,修改部分代码如下:

if (items.Count == 1)
        {
   
            itemNowImg.sprite = img;
            itemNextImg.sprite = img;
            itemPrevImg.sprite = img;
        }

这样道具个数变成一个时,就会填充满道具栏图标了。

密码解锁获得道具

用UI来实现输入密码

我们的保险柜为密码锁,所以我们需要实现密码解锁保险柜获得钥匙的功能,然而只使用我们之前所编写的Contact脚本无法完成这个功能,需要专门为它编写新的脚本。
首先我们还是把脚本添加给保险柜,但是由于我们点击保险柜不会得到任何道具,所以选择类型4,也不会有对话产生,我们唯一需要让交互做的就是生成UI界面。
因此我们需要制作一张新的画布命名为Password,将其拖动到保险柜的ShowObject数组下,剩下的就是设置好UI界面后编写脚本了!

设置UI界面

关于UI界面,我想要做出四个拨盘的密码锁效果,图片如下:
在这里插入图片描述

密码锁代码

图中有几个需要实现的功能,我将一一列举出来并附上代码。
首先是挂载在canvas画布上的脚本需要声明的变量:

[Header("Manu")]
    public GameObject character;
    public GameObject item;
    public GameObject itemBox;
    public GameObject dialogPrefeb;
    [Header("Change
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值