今天我们来完成游戏中NPC的对话。

对于游戏中的NPC的对话,可以有许多方法做出来。不过这次我要介绍的是,通过碰撞OnTriggerEnter()的方法。
下面我们就来详细解刨一下代码。以下代码都是用C#写出来的。
using UnityEngine;
using System.Collections;
public class Npc : MonoBehaviour {

bool flag = false, flag1, flag2;
//定义三个判断的标志位
public static bool flag3;
//接受任务的标志位
    void Update()
    {
//定义一个鼠标点击的射线
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
//定义光线投射碰撞
        RaycastHit hit;
//判断是否碰撞
       if (Physics.Raycast(ray, out hit))
      {
//碰撞判断目标是否是NPC1
          if (hit.collider.tag == "NPC1")
            {
//鼠标单击事件
                if (Input.GetMouseButtonDown(1))
                {
//第一个标志是真。
                    flag = true;
                }
}
         
        }
    }
    void OnMouseDown()
    {
//第一个标志位是真。
       flag = true;
    }
    void OnGUI()
    {
// 如果标志位为真
        if (flag)
        {
//GUI的label中的字体大小为10.
GUI.skin.label.fontSize = 10;
           GUI.Box(new Rect(0, 450, 700, 200), "你好,我是诸葛神机");
          GUI.Label(new Rect(0, 500, 200, 100), "能力不够去帮我采蘑菇,采完给你奖励,小心,你现在打不过哪些怪物,好了去吧,等你回来");
           if (GUI.Button(new Rect(50, 450, 50, 30), "接受"))  
//如果单击了按钮。
           { 
//第一个表示为真
              flag = false;
           }
//如果单击”关闭“按钮
            else if (GUI.Button(new Rect(0, 450, 50, 30), "关闭"))
          {
             //标志位为真
               flag = false;
                
            }
       }
//如果标志位2为真
        else if (flag2)
        {
            GUI.Box(new Rect(0, 450, 700, 200), "你好,我是诸葛神机");
         GUI.Label(new Rect(0, 500, 200, 100), "好吧,看在你这么努力的份上,给你10个金币吧");
         if (GUI.Button(new Rect(0, 450, 50, 30), "拒绝"))
//单击拒绝按钮
          {
//标志位2为真。
              flag2 = false;
         }
        }
//或者标准位3为真
       else if (flag3)
       {
           GUI.Box(new Rect(0, 450, 700, 200), "你好,我是诸葛神机");
         GUI.Label(new Rect(0, 500, 200, 100), "能力不够去帮我采蘑菇,采完给你奖励,小心,你现在打不过哪些怪物,好了去吧,等你回来");
         if (GUI.Button(new Rect(0, 450, 50, 30), "关闭"))
//单击关闭按钮
       {
//标志位2为真
           flag2 = false;
           }
        }
}
      
}
注意:
以上就是NPC的对话,实现。里面用来很多标志位。再看时要仔细看清楚。
最重要的是。你不能通过按钮判断直接弹出GUI.Label里面的内容。
举个例子:
if(GUI.Button(new Rect(100,200,111,222,),"确定"))
{
GUI.Lable(new Rect(211,121,233,123),"恭喜你过关!");
}
这段代码在OnGUI中是不能被调用的。所以要用标志位flag,完成这段GUI.Label内容的显示。
把上面的代码改一下就能出来了。
if(GUI.Button(new Rect(100,200,111,222,),"确定"))
{
flag=true;
}
if(flag)
{
GUI.Lable(new Rect(211,121,233,123),"恭喜你过关!");
}
这样通过标志位就完成了GUI.Label内容的显示。
更多精彩内容请到: http://www.gopedu.com/

角色游戏二(NPC对话)相关推荐

  1. 开发H5游戏练手, 黑暗堡垒-炼狱传奇H5 (三) 玩家信息,背包,商店,技能,任务,玩家菜单,游戏菜单,NPC对话与攻击怪物

    项目地址 https://github.com/mangenotwork/HABL-H5 基于 lufylegend 开发 lufylegend 框架官网 : http://www.lufylegen ...

  2. c语言编写可乐瓶游戏,可乐瓶游戏二十则

    <可乐瓶游戏二十则>由会员分享,可在线阅读,更多相关<可乐瓶游戏二十则(2页珍藏版)>请在人人文库网上搜索. 1.可乐瓶游戏二十则废弃的可乐瓶如果能合理地开发与运用,将创编出各 ...

  3. html5角色游戏,角色游戏教案集合5篇

    角色游戏教案集合5篇 作为一名专为他人授业解惑的人民教师,就难以避免地要准备教案,借助教案可以让教学工作更科学化.那要怎么写好教案呢?以下是小编为大家整理的角色游戏教案5篇,仅供参考,大家一起来看看吧 ...

  4. 使用Qt动画框架设计角色的二维动画

    使用Qt动画框架设计角色的二维动画 Qt的动画框架是Qt4.6新添加的一个重要的特性,有了它,开发人员可以制作激动人心的动画界面,而不必局限于单调的固定窗口了,可以说,Qt动画框架是其它界面库少见的功 ...

  5. 装甲逆袭-NPC对话处理

    NPC对话其实就是在地图上一个点击事件,然后触摸到该位置的时候,显示一个界面.至于NPC对话的内容,可以放到地图上. bool RpgGameScene::npcTouch(CCTouch *pTou ...

  6. 『牛角书』基于JS实现的鸿蒙游戏——二十四点纸牌

    目录 前言 概述 正式开始 一.创建项目 二.编码 1.项目结构 2.实现思路 3.主要代码块 三.页面及功能展示 1.运算正确 2.运算错误 3.换一批及重置 本人项目仓库链接 前言 相信大家都有玩 ...

  7. 设计模式 策略模式 以角色游戏为背景

    今天不想写代码,给大家带来一篇设计模式的文章,帮助大家可以把系统组织成容易了解.容易维护.具有弹性的架构. 先来看看策略模式的定义: 策略模式(Strategy Pattern):定义了算法族,分别封 ...

  8. 博弈游戏·Nim游戏·二

    题目1 : 博弈游戏·Nim游戏·二 时间限制: 10000ms 单点时限: 1000ms 内存限制: 256MB 描述 Alice和Bob这一次准备玩一个关于硬币的游戏: N枚硬币排成一列,有的正面 ...

  9. 不用找,你想要的横版人物,角色游戏素材素材都在这里

    横版人物,角色游戏素材素材,我常用的这个网站就挺好的,免费下载,资源多,品质优,而且资源类型都很齐全,要是大家需要可以看一下,真的不骗人!一键打包下载,快捷方便! 在找寻资源的时候,无意中发现了这个网 ...

最新文章

  1. 元组、列表、字典及集合练习
  2. 图灵科普系列丛书封面有奖征集(贴图送书)
  3. Java学习笔记13(equals()方法;toString()方法)
  4. crontab命令linux,crontab命令
  5. 设置兼容性[指定IE浏览器渲染方式]
  6. [BUUCTF-pwn]——xdctf2015_pwn200
  7. PHP 连接MySQL数据库
  8. 学python能做什么-非计算机专业的人学python能做什么?
  9. 【重点:DP 双指针 栈】LeetCode 42. Trapping Rain Water
  10. webstorm2019汉化详细教程,小白专用
  11. 水系图一般在哪里找得到_如何对于排水系统的服务范围进行统计分析
  12. 恶意代码分析实战学习——静态分析
  13. table冻结列,可冻结首行,首列
  14. 英雄联盟祖安服务器位置,《英雄联盟》祖安大区将开冠军杯赛全量测试 5月9日开战...
  15. 通俗解释机器学习中的召回率、精确率、准确率
  16. 拼多多拼团电子商务论文题目(精选)
  17. 自回避随机行走问题 c语言,醉汉随机行走/随机漫步问题(Random Walk Randomized Algorithm Python)...
  18. 喝脱脂牛奶容易长青春痘
  19. springboot高校学生宿舍水电费报修考勤管理系统
  20. 使用cdsapi下载ERA5土地逐小时数据集

热门文章

  1. 牛客网:两两配对值最小
  2. 葵花宝典第一招:唐氏均线成交量参数
  3. 什么是埃博拉免疫T-细胞?
  4. 区块链 Hyperledger Composer 使用教程(环境搭建、项目开发 一)
  5. oracle SO币种默认设置,Oracle EBS 11i 表结构——OE模块 so_headers_all;so_lines_all
  6. 程序员有哪些必备技能?
  7. 水星路由器wan口ip显示0_路由器wan口状态全是0 路由器wan口状态ip为0-192路由网
  8. 2023 XL软件库App后端源码 可自定义易支付 完整版
  9. 崩坏3水晶计算 关于日期的计算篇 上
  10. 新南威尔士大学计算机博士申请,unsw大学研究生