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 @ 2024-02-28 12:55  hellozjf  阅读(30)  评论(0编辑  收藏  举报