创建可互动接口
实现宝箱代码
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
标签:逻辑,场景,宝箱,void,spriteRenderer,互动,public,isDone From: https://www.cnblogs.com/hellozjf/p/18039968