当前位置: 首页 > news >正文

『功能项目』靠近Npc显示可对话标识【60】

我们打开上一篇59窗口可拖拽脚本的项目,

本章要做的事情是在资源加载时加载Npc01并且实现主角靠近Npc01时,显示可对话标识,当按键盘G键时弹出对话内容

首先在资源场景中加载一个Npc模型

导入(除脚本)外的资源

在资源文件夹中创建一个脚本Npcs用于存放Npc模型

将导入的资源材质设置为URP可兼容

重命名为Npc01放入新建的Npcs文件夹中

创建一个角色控制器(拖拽四个动画让其不设置参数播放即可)

将Npc01AC拖拽至预制体Npc01中

在Npc01预制体内创建Canvas

将以下资源图片放进Art文件夹中

设置为精灵模式

拖拽至Image框选中后隐藏

创建Image制作对话面板

设置锚点在下方

将以下资源图片放进Art文件夹

设置为精灵模式

拖拽至框选

重命名为TalkUI

创建Image

设置尺寸

将以下资源放在Art文件夹并设置为精灵模式

拖拽至框选

将Image重命名为NpcImage

创建文本

设置文本

重命名为NpcText

将Talk重命名为Talk01再将TalkUI01拖拽至预制体文件夹后在场景中删除

创建脚本:AbleTalk.cs

using UnityEngine;
public class AbleTalk : MonoBehaviour{bool isG;public int countG = 0;GameObject canTalk;GameObject uiPrefabInstance;GameObject uiPrefab;void Start(){canTalk = transform.Find("Canvas/Image").gameObject;uiPrefab = Resources.Load<GameObject>("Prefabs/UITalk/TalkUI01");}void OnTriggerEnter(Collider other){if (other.CompareTag("Player")){transform.Find("Canvas/Image").gameObject.SetActive(true);isG = true;}}void OnTriggerExit(Collider other){if (other.CompareTag("Player")){transform.Find("Canvas/Image").gameObject.SetActive(false);isG = false;}}void Update(){if (canTalk.activeSelf && Input.GetKeyDown(KeyCode.G)){if (countG == 1)return;uiPrefabInstance = Instantiate(uiPrefab, new Vector3(0f, 285, 0f), Quaternion.identity);uiPrefabInstance.transform.SetParent(GameObject.Find("CurrentCanvas").transform, false);countG++;}if (isG == false)countG = 0;}
}

在游戏管理器框架中添加Npc01及其新增脚本AbleTalk.cs

保存项目后运行 - 靠近Npc01弹出可对话红色标识后按键盘G键即可弹出Npc对话框

本章做了Npc的可对话功能,当靠近Npc会弹出可对话红色标识,按键盘G键后即可弹出对话内容

接下来的文章内容:

1.按G键持续显示对话内容

2.窗口可拖拽脚本

3.点击名称寻找地点功能

4.隐藏怪物的生成

5.怪物I攻击范围内的主动攻击

6.掉落坐骑蛋的获取

7.异步传送转换场景

以及开放回合制、坐骑系统、宠物系统、背包系统、神炼系统、商城系统、Boss的目标跟随任务导航系统以及UI播放3D动画效果等等。

具体项目运行效果请关注water1024的b站视频项目演示《破碎纪元》

【Unity回合2.5D】破碎纪元_单机游戏热门视频 (bilibili.com)icon-default.png?t=O83Ahttps://www.bilibili.com/video/BV1rZY4e9Ebs/?spm_id_from=333.999.0.0&vd_source=547091a95b03acfa8e8a9e46ef499cd6


http://www.mrgr.cn/news/29110.html

相关文章:

  • 数字后端教程之Innovus report_property和get_property使用方法及应用案例
  • oneplus3t-lineageos-16.1编译-android9
  • 10.WINUSB复合设备
  • 解决C盘空间不足的三种方案
  • Hadoop积累---Hadoop判断job和map的开始和结束(带源码)
  • 【LLM】3:从零开始训练大语言模型(预训练、微调、RLHF)
  • 在Ubuntu上安装Rails和nginx与Passenger的方法
  • C++第七节课 运算符重载
  • Linux:用户账号管理和组账号管理
  • stm32开发之串口空闲中断和环形数组的最简单的组合使用
  • 【ShuQiHere】算法分析:揭开效率与复杂度的神秘面纱
  • goctl安装失败
  • oracle 11g SYSAUX表空间清理
  • 408算法题leetcode--第七天
  • Java中的OOM与SOF:详解内存溢出与栈溢出
  • 计算机视觉中的图像ROI区域提取与应用
  • 25届校招IQCAT思维能力自适应测验智鼎测评指南:题库获取、刷题策略与真题解析!
  • Errorresponsefromdaemon:toomanyrequests:Youhavereachedyourpullratelimit.
  • 掌握文本分割:使用CharacterTextSplitter进行有效的文档处理
  • Java零基础-继承详解!
  • 网络流之最大流(dinic算法模板+模板题)
  • 2024重生之回溯数据结构与算法系列学习【无论是王道考研人还真爱粉都能包会的;不然别给我家鸽鸽丢脸好嘛?】
  • C++第六节课 - 拷贝构造函数
  • C++核心编程和桌面应用开发 第四天(构造/析构函数)
  • 【python设计模式2】创建型模式1
  • (185)时序收敛--->(35)时序收敛三五