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

创建可互动接口

实现宝箱代码

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

posted @   hellozjf  阅读(37)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示