【Unity】RPG小游戏创建游戏中的交互

RPG小游戏创建游戏中的交互

  • 创建可交互的物体的公共的父类(Interactable)
    • InteractableObject 类
    • NPCObject 类
    • PickableObject 类

创建可交互的物体的公共的父类(Interactable)

在这里插入图片描述

InteractableObject 类

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.AI;/// <summary>
/// NPC和Pickable的父类
/// </summary>public class InteractableObject : MonoBehaviour
{private NavMeshAgent playerAgent;private bool haveInteeacted;标志位(是否进行交互过,默认每次点击只交互一次)public void OnClick(NavMeshAgent playerAgent)//将 NavMeshAgent 组件传递过来。{this.playerAgent = playerAgent;playerAgent.stoppingDistance = 2;与被交互的物体设置的边距(保证不穿模)。playerAgent.SetDestination(transform.position);//设置目标位置让其移到附近。haveInteeacted = false;//添加上这个便可以将面板再次显示。}private void Update(){if(playerAgent != null && haveInteeacted == false && playerAgent .pathPending==false){if(playerAgent.remainingDistance<=2)//到达目标位置才进行交互。{Interact();//交互haveInteeacted = true;}}}protected virtual void Interact(){print("Interacting with Interactable Object.");}
}

NPCObject 类

using System.Collections;
using System.Collections.Generic;
using UnityEngine;/// <summary>
/// 定义NPC
/// </summary>public class NPCObject : InteractableObject//继承自InteractableObject
{public new string name;//public string Name {  get; set; }public string[] contentList;//public DialogueUI dialogueUI;protected override void Interact(){//dialogueUI.Show(name, contentList);DialogueUI.Instance.Show(name, contentList);}
}

PickableObject 类

using System.Collections;
using System.Collections.Generic;
using UnityEngine;/// <summary>
/// 定义Pickable的动作
/// </summary>public class PickableObject : InteractableObject
{public ItemScriptObject itemSO;//用来表示哪个Itemprotected override void Interact(){Destroy(this.gameObject);InventoryManager.Instance.AddItem(itemSO); }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/819959.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySQL 5.7 重置root用户密码

MySQL 5.7 重置root用户密码 如果你忘记了 MySQL 5.7 的 root 用户密码&#xff0c;可以按照以下步骤来重置密码&#xff1a; 1、停止 MySQL 服务。 # systemctl stop mysql.service 2、进入MySQL服务的安全启动模式 # mysqld_safe --skip-grant-tables &3、连接到 MyS…

Transformers 库 与 Transformer 有什么区别?

"Transformers"库和"Transformer"模型是两个不同的概念&#xff0c;但它们都与自然语言处理&#xff08;NLP&#xff09;紧密相关。下面我将详细介绍这两者之间的区别。 Transformers库 "Transformers"是一个由Hugging Face团队开发的开源Pyth…

【攻防世界】warmup

[HCTF 2018]WarmUp全网最详细解释_[hctf 2018]warmup的解-CSDN博客 php://filter 读取源码&#xff08;文件&#xff09; php://input 执行php代码&#xff0c;需要post请求提交数据 Content-Type为image/jpeg text. 绕过后缀的有文件格式有php,php3,php4,php5,pht…

【Unity 实用工具篇】 | UIEffect 实现一系列UGUI特效,灰度、负片、像素化特效

前言 【Unity 实用工具篇】 | UIEffect 实现一系列UGUI特效&#xff0c;灰度、负片、像素化特效一、UGUI特效插件&#xff1a;UIEffect1.1 介绍1.2 效果展示1.3 使用说明及下载 二、组件属性面板三、代码操作组件四、组件常用方法示例4.1 使用灰度特效做头像(关卡)选择 总结 前…

03-JAVA设计模式-迭代器模式

迭代器模式 什么是迭代器模式 迭代器模式&#xff08;demo1.Iterator Pattern&#xff09;是Java中一种常用的设计模式&#xff0c;它提供了一种顺序访问一个聚合对象中各个元素&#xff0c;而又不需要暴露该对象的内部表示的方法。迭代器模式将遍历逻辑从聚合对象中分离出来…

IP地址归属地与旅游业应用

在当今数字化时代&#xff0c;IP地址归属地已成为许多行业的重要工具&#xff0c;其中包括旅游业。IP地址归属地是指将特定IP地址与其地理位置相关联的过程。在旅游业中&#xff0c;利用IP地址归属地可以提供多种应用&#xff0c;从客户定位到个性化推广&#xff0c;以及旅游数…

树--排序二叉树的删除

一、二叉排序树的删除 二叉排序树的删除情况比较复杂&#xff0c;有以下三种情况需要考虑。 删除叶子节点 &#xff08;比如&#xff1a;2,5,9,10&#xff09;删除只有一个子树的节点&#xff08;比如&#xff1a;1&#xff09;删除有两个子树的节点 &#xff08;比如&#x…

YAPI第一次创建项目

黑马程序员JavaWeb开发教程 文章目录 1、添加项目2、添加分类3、添加接口 1、添加项目 2、添加分类 3、添加接口

用通俗易懂的语言来解释开源软件各种协议的区别

开源软件协议是一系列法律文本&#xff0c;它们规定了人们如何使用、修改和分发开源代码。这些协议确保软件可以自由地被他人利用&#xff0c;同时保护原作者的权益和软件的开放性。以下是几种常见开源协议的通俗解释&#xff1a; 1. GNU 通用公共许可证&#xff08;GPL&#…

wsl2的ubuntu22.04中安装ros2

1、设置编码 sudo locale-gen en_US en_US.UTF-8 sudo update-locale LC_ALLen_US.UTF-8 LANGen_US.UTF-8 export LANGen_US.UTF-8 2、hosts文件中添加域名解析 vim /etc/hosts 199.232.96.133 raw.githubusercontent.com 199.232.96.133 raw.github.com 3、设置软件源 su…

avue中增删改功能hook提取

再avue使用中&#xff0c;我们会进场用到表格的增删改功能&#xff0c;我们写一个公共的hooks&#xff0c;然后只需要对请求的方法&#xff0c;参数的前后处理&#xff0c;就可以统一生成 import type { AxiosPromise } from "axios"; import type { Ref } from &qu…

数据结构:线性表————单链表专题

&#x1f308;个人主页&#xff1a;小新_- &#x1f388;个人座右铭&#xff1a;“成功者不是从不失败的人&#xff0c;而是从不放弃的人&#xff01;”&#x1f388; &#x1f381;欢迎各位→点赞&#x1f44d; 收藏⭐️ 留言&#x1f4dd; &#x1f3c6;所属专栏&#xff1…

STM32的GPIO端口的八种模式解析

目录 STM32的GPIO端口的八种模式解析 一、上拉输入模式 二、下拉输入模式 三、浮空输入模式 四、模拟输入模式 五、推挽输出模式 六、开漏输出模式 七、复用推挽输出模式 八、复用开漏输出模式 STM32的GPIO端口的八种模式解析 在学习STM32的过程中&#xff0c;GPIO端口…

最全面的多语言同城送餐app开发流程解析

在当今数字化时代&#xff0c;随着移动互联网的普及和人们生活水平的提高&#xff0c;多语言同城送餐app开发成为各大企业争相布局的热门领域。本文将从专家的视角出发&#xff0c;为您详细解析最全面的多语言同城送餐app开发流程&#xff0c;助您在激烈的竞争中脱颖而出。 多…

mysql not in 和 null

in语句不会对null进行过滤匹配 not in语句后面的范围不能出现null&#xff0c;否则执行无效&#xff0c;如果后面是子查询&#xff0c;则需要手动增加is not null过滤条件 力扣题目链接 本题中如果将第二个case中的in改成not in&#xff0c;因为目标中有null 则会直接跳过第二…

使用colab进行yolov5小demo练习

输入一张动物的图片进行目标检测和分类 !pip install yolov5 import torch from PIL import Image from torchvision import transforms from yolov5.models.experimental import attempt_load from yolov5.utils.general import non_max_suppression# 加载YOLOv5模型 device …

婴儿专用洗衣机哪个牌子比较好?四款品质婴儿洗衣机暖心安利

科技让我们的生活变得方便了许多&#xff0c;比如&#xff0c;自从有了婴儿洗衣机之后&#xff0c;有些人就改变了宝宝衣物必须要手洗的想法&#xff0c;许多研究也证明&#xff0c;单靠手洗是无法将宝宝衣物彻底清洗干净的&#xff0c;一台专门的洗衣机就可以减轻我们的负担&a…

【MySQL笔记】InnoDB的插入缓存+非聚簇索引插入的离散性理解

文章目录 为什么需要插入缓存Insert Buffer非聚簇索引插入的离散性 Insert Buffer查看Insert Buffer信息 Insert Buffer的问题Change Buffer总结Reference 为什么需要插入缓存Insert Buffer 磁盘中的主键索引由于天然自增&#xff0c;无须磁盘的随机 I/O&#xff0c;只需不断追…

聚观早报 | 2024款蔚来ET7将发布;魏建军直播测试长城汽车

聚观早报每日整理最值得关注的行业重点事件&#xff0c;帮助大家及时了解最新行业动态&#xff0c;每日读报&#xff0c;就读聚观365资讯简报。 整理丨Cutie 4月16日消息 2024款蔚来ET7将发布 魏建军直播测试长城汽车 Redmi Turbo 3开启销售 华为P系列正式升级为华为Pura…

Script file ‘D:\Anaconda\Scripts\pip-script.py‘ is not present.

报错解释&#xff1a; 这个错误表明系统尝试执行的脚本文件 D:\Anaconda\Scripts\pip-script.py 不存在。这通常发生在尝试使用 pip 时&#xff0c;但 pip 没有正确安装或者路径设置不正确时。 解决方法&#xff1a; 确认 pip 是否已经安装在 Anaconda 中。可以通过 Anaconda…