之前实现了物品的拾取功能,但是没有实现丢弃功能,这一篇讲一下我是如何实现丢弃功能的。
丢弃功能的逻辑是:拾取物品时,需要使用拾取的物品进行类的实现,所以,我们需要把数据存储到拾取的物品上,然后通过拾取的物品数据进行设置实例,这样使用过的武器再捡起来,还可能恢复到丢弃前的状态。
在丢弃时,需要将武器的使用后的数据设置给拾取物品。
修改拾取物品类
首先创建一个结构体,存储之前武器上的相关配置属性
我们需要将武器的数据直接存储在拾取物品上,现在拾取实例上面现在存了两份数据,一份是生成角色持有是生成的数据,另一份则是生成实例后需要设置给武器的数据。
在将武器生成到角色身上时,我们需要使用拾取实例上面的数据去设置武器实例,而不是每次捡起来就是武器的默认数据了。
实现武器丢弃
新创建一个武器丢弃输入,我这里绑定了G键
我当前实现的是角色可以将手中的武器丢弃,所以需要先判断手中是否有武器,然后根据选择找到需要丢弃是角色身上哪一把武器,调用新实现的事件生成可拾取物事件,然后将角色状态修改回默认空手idle状态。
在生成可拾取物事件中,先去通过角色的位置去拾取地面,如果获取到了地面位置,生成一个可以生成Actor的位置。
通过武器实例身上设置的拾取类实例化
然后调用武器身上的生成结构体去生成存储在拾取实例身上的当前武器的数据,并销毁自身,销毁自身函数里面先销毁弹夹,然后销毁了自己,弹夹也是在武器身上实例化的,所以,让武器实例自己销毁。
从变量生成结构体,就是生成了之前创建的结构体。
武器丢弃功能的重点其实就是数据的存取。我们使用结构体,可以有效简单的实现数据的传递。