unity3d实现NPC显示名称

该博客介绍了如何使用Unity3D结合C#脚本来实现NPC的名称在游戏界面中显示,通过3D到2D坐标的转换,并依据NPC的高度进行GUI绘制。
摘要由CSDN通过智能技术生成

            这篇脚本简单易懂,无非就是将NPC的3D坐标转换为2D坐标,根据NPC高度用GUI绘制名称。

<span style="font-size:14px;">using UnityEngine;
using System.Collections;

public class NameHun : MonoBehaviour {
	private GameObject player;//主角对象
	private Camera camera;//主摄像机对象
	private string name="小混混";//NPC名称
	private float npcHeight=0.8f;//NPC模型高度,可根据模型大小更改
	// Use this for initialization
	void Start () {
		//根据Tag得到主角对象
		player=GameObject.FindWithTag("Player");
		camera = Camera.main;
	}
	
	// Update is called once per frame
	void Update () {
		transform.LookAt (player.transform);//保持NPC一直面向主角
		transform.eulerAngles += new Vector3 (0, 180, 0);//如果NPC方向没问题,这句可忽略
	}
	void OnGUI()
	{    //得到NPC头顶在3D世界中的坐标
		//默认NPC坐标点在脚底下,所以这里加上npcHeight它模型的高度即可
		Vector3 worldPosition = new Vector3 (transform.position.x, t
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Unity3D 与NPC对话的完整流程一般包括以下几个步骤: 1. 创建NPC角色和对话框 首先需要创建一个NPC角色,可以使用Unity3D内置的角色模型或者自己制作模型。同时,在NPC身上添加一个Collider组件,以便与玩家角色进行交互。然后创建一个对话框UI界面,用于显示NPC的对话内容。 2. 触发对话事件 当玩家角色进入NPC的交互范围时,需要触发对话事件。可以通过检测碰撞触发器或者射线检测等方式实现。当玩家进入交互范围后,NPC的对话框会弹出。 3. 显示对话内容 当对话框弹出后,需要根据NPC的对话内容来显示对话框中的内容。可以使用文本框或者图文混排等方式来显示对话内容。 4. 玩家选择对话选项 当NPC的对话内容显示完成后,玩家需要选择对话选项来回复NPC。可以使用按钮或者滑动条等方式来实现。 5. 处理对话逻辑 根据玩家选择的对话选项,需要执行相应的对话逻辑。例如,如果玩家选择了“接受任务”,则需要将任务添加到任务列表中;如果玩家选择了“拒绝任务”,则需要关闭对话框。 下面是一个简单的代码示例,用于实现与NPC对话功能: ```csharp using UnityEngine; using UnityEngine.UI; public class NPCDialog : MonoBehaviour { // NPC对话框UI界面 public GameObject dialogUI; // 对话内容文本框 public Text dialogText; // 对话选项按钮 public Button acceptButton; public Button rejectButton; // 玩家与NPC的距离 public float distance = 2f; // NPC的对话内容 private string[] dialogContent = new string[] { "你好,欢迎来到我的店铺!", "有什么需要帮忙的吗?", "我这里有些不错的商品,你可以看看。", "好的,祝你好运!" }; // 当玩家进入NPC的交互范围时触发 void OnTriggerEnter(Collider other) { // 判断进入交互范围的对象是否为玩家 if (other.CompareTag("Player")) { // 计算玩家与NPC的距离 float distance = Vector3.Distance(transform.position, other.transform.position); // 如果距离小于指定距离,则弹出对话框 if (distance <= this.distance) { // 显示对话框 dialogUI.SetActive(true); // 显示对话内容 dialogText.text = dialogContent[0]; // 隐藏拒绝按钮 rejectButton.gameObject.SetActive(false); } } } // 当玩家离开NPC的交互范围时触发 void OnTriggerExit(Collider other) { // 判断离开交互范围的对象是否为玩家 if (other.CompareTag("Player")) { // 隐藏对话框 dialogUI.SetActive(false); } } // 玩家选择“接受”按钮时触发 public void OnAcceptButtonClicked() { // 显示下一条对话内容 dialogText.text = dialogContent[1]; // 显示拒绝按钮 rejectButton.gameObject.SetActive(true); } // 玩家选择“拒绝”按钮时触发 public void OnRejectButtonClicked() { // 隐藏对话框 dialogUI.SetActive(false); } } ``` 以上代码实现了一个简单的NPC对话功能,具体实现可以根据需求进行修改。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值