首页 > 其他分享 >7-2. 场景互动的逻辑实现

7-2. 场景互动的逻辑实现

时间:2024-02-28 13:00:10浏览次数:35  
标签:逻辑 场景 宝箱 void spriteRenderer 互动 public isDone

创建可互动接口

实现宝箱代码

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

public class Chest : MonoBehaviour, IInteractable
{
    private SpriteRenderer spriteRenderer;
    public Sprite openSprite;
    public Sprite closeSprite;
    public bool isDone;

    private void Awake()
    {
        spriteRenderer = GetComponent<SpriteRenderer>();
    }

    private void OnEnable()
    {
        spriteRenderer.sprite = isDone ? openSprite : closeSprite;
    }

    public void TriggerAction()
    {
        // Debug.Log("Open Chest!");
        if (!isDone)
        {
            OpenChest();
        }
    }

    private void OpenChest()
    {
        spriteRenderer.sprite = openSprite;
        isDone = true;
        gameObject.tag = "Untagged";
    }
}

宝箱实现了 IInteractable 接口,当玩家和宝箱交互的时候,就会触发 TriggerAction 方法,然后更改宝箱图片、标识宝箱已完成,让了防止已经打开的宝箱人物站在旁边依旧显示标识,需要将它的 tag 改为 Untagged

人物如何与宝箱交互

首先在 inputAction 上面新增一个交互按钮

按 Confirm 按钮按下的时候,执行交互逻辑

注意,给宝箱挂载一个 AudioDefination 组件,这样打开宝箱的时候可以获取宝箱上面定义的音频进行播放

给传送门增加可互动

这样人物来到传送门的时候,就能显示可互动标识,并且按下互动按钮可以打印出日志

项目相关代码

代码仓库:https://gitee.com/nbda1121440/2DAdventure.git

标签:20240228_1241

标签:逻辑,场景,宝箱,void,spriteRenderer,互动,public,isDone
From: https://www.cnblogs.com/hellozjf/p/18039968

相关文章

  • 7-1. 人物可互动标识
    场景中叠加场景将两个场景的公用部分提取到Persistent场景中,之后需要使用哪个场景,只需要把那个场景添加到Persistent场景下面就行了注意,如果要往场景中添加物体的话,需要先把场景激活添加宝箱先切割宝箱图片,然后把宝箱放到场景中,给宝箱添加BoxCollider2D,设置碰撞体为T......
  • 6-3. 水和荆棘的逻辑实现
    修改场景中的Grid它们都要有TilemapCollider2D组件,并且IsTrigger为true给水添加Water标签人物碰到水就死亡修改Character.cs,增加OnTriggerStay2D方法添加荆棘然后再给荆棘添加Attack组件项目相关代码代码仓库:https://gitee.com/nbda1121440/2DAdv......
  • SpringBoot 2x 系列之(七)web场景
    web场景1.SpringMVC自动配置概览SpringBootprovidesauto-configurationforSpringMVCthatworkswellwithmostapplications.(大多场景我们都无需自定义配置)Theauto-configurationaddsthefollowingfeaturesontopofSpring’sdefaults:InclusionofCont......
  • pickBy 在前端开发中的最佳实践和使用场景举例说明
    pickBy是lodash中的一个函数,其作用是过滤对象中的属性,只保留符合条件的属性。它的用法如下:_.pickBy(object,[predicate=_.identity])其中,object是要过滤的对象,predicate是一个可选的函数,用于定义过滤条件。如果没有传入predicate函数,则默认使用_.identity函数,即返回......
  • R语言逻辑回归、决策树、随机森林、神经网络预测患者心脏病数据混淆矩阵可视化
    全文链接:https://tecdat.cn/?p=33760原文出处:拓端数据部落公众号概述:众所周知,心脏疾病是目前全球最主要的死因。开发一个能够预测患者心脏疾病存在的计算系统将显著降低死亡率并大幅降低医疗保健成本。机器学习在全球许多领域中被广泛应用,尤其在医疗行业中越来越受欢迎。机器......
  • R语言武汉流动人口趋势预测:灰色模型GM(1,1)、ARIMA时间序列、logistic逻辑回归模型|附代
    全文链接:http://tecdat.cn/?p=32496原文出处:拓端数据部落公众号人口流动与迁移,作为人类产生以来就存在的一种社会现象,伴随着人类文明的不断进步从未间断。人力资源是社会文明进步、人民富裕幸福、国家繁荣昌盛的核心推动力量。当前,我国经济正处于从以政府主导的投资驱动型的经......
  • 逻辑回归(分类算法)
    阶跃函数Sigmoid\[g(z)=\frac{1}{1+e^{-z}}\]线性函数进行sigmoid操作\[h_{\theta}(x)=g\left(\theta^{T}x\right)=\frac{1}{1+e^{-\theta^{T}x}}\]对于分类任务\[\begin{array}{l}P(y=1\midx;\theta)=h_{\theta}(x)\\P(y=0\midx;\theta)=1-h_{\theta}(x......
  • offline RL · RLHF · PbRL | OPPO:PbRL 场景的 offline hindsight transformer
    论文题目:BeyondReward:OfflinePreference-guidedPolicyOptimization,ICML2023,3368reject。(已经忘记当初为何加进readinglist了,可能因为abstract太炫酷了?就当作学习经验教训吧…)材料:pdf版本:https://arxiv.org/pdf/2305.16217.pdfhtml版本:https://ar5iv.labs......
  • 5-2. 滑铲的逻辑和动画的实现
    动画我们需要快速打断滑铲,所以没用结束滑铲动画状态机中,使用了isSlide这个布尔变量NewState->blueSlide0,需要isSlide=true,立即进入blueSlide0->blueSilde1,需要isSlide=true,完整播放一次之后进入当isSlide=false的时候,如果在blueSlide0或blueSlide1,就进......
  • 在typescript项目中什么场景适合定义枚举值,什么场景适合定义常量类?
    在typescript项目中什么场景适合定义枚举值,什么场景适合定义常量类在TypeScript中,枚举(enum)和常量类(通常是带有只读属性的类)都有其适用场景:适合定义枚举值的场景:有限且命名的集合:当你需要表示一组固定的、可枚举的值,并且每个值都有一个明确的名字时,使用枚举类型是合适的。......