Unity3d - RPG项目学习笔记(六)

前期工程已经实现了角色的移动以及镜头的控制。现在开始处理场景中的NPC以及任务UI。

一、NPC的创建

将工程中的NPC—长者模型拖动至场景内,并添加碰撞盒子,调整位置及大小。

二、任务UI的建立

2.1 任务背景的搭建

将工程素材的图片打包入工程文件的Atlas,然后在UIroot中创建背景即可。

2.2 接受/取消按钮的搭建

将Atlas中的按钮创建至背景即可,添加碰撞盒及按钮组件。

2.3 处理屏幕中的点击事件

当我们搭建完成上述内容后,发现点击UI界面,角色会向地面移动,需要对此BUG进行修复。

之前定义的移动逻辑为:鼠标按下→生产射线→生成碰撞点→角色转向→计算距离→角色移动→始终朝向目标点

我们必须在逻辑之初加入 鼠标按下 && 点击位置非UI

NGUI中的API  UICamera.hoveredObject 意义是UI界面的中任何物体

所以在前期的PlayerDirection脚本中,对Update的朝向条件需要更新为:

if( Input.GetMouseDown(0) && UICamera.hoveredObject == null ) 同时给背景加入碰撞器,这样就完成了点击事件。

2.4 处理UI的出现

我们并不能要求任务文本一上来就在屏幕显示,那么需要添加触发,以点击长者为触发条件。

首先为任务UI添加播放动画(飞入效果),为任务背景添加Tween→position,设定起点及止点,然后将tweener脚本隐藏掉。

为长者添加脚本如下:

public TweenPosition tweenposition;

void OnMouseOver( )

{

ShowQuest( );

}

void ShowQuest()

{

tweenposition.gameObject.SetActive(true);

tweenposition.PlayForward( );

}

这样点击长者就可以出现任务界面了。

2.5 处理任务UI的关闭

为任务UI添加关闭按钮,然后对长者的脚本更新如下:

public void OnCloseButton( )

{

HideQuest( );

}

void HideQuest( )

{

tweenposition.PlayReverse();

}

这样的话任务UI就会自动退出去了。

今日总结到此为止。

时间: 2024-10-11 06:34:16

Unity3d - RPG项目学习笔记(六)的相关文章

Unity3d - RPG项目学习笔记(二十六)

上期工程实现了将技能信息读取至内存中来,现在开始实现技能在技能栏中的显示——SrollView技术的应用. 需求: 在技能栏中显示角色的所有技能,侧边栏加入滚动条,通过滚动条可以实现技能的滚动浏览. 思路: 建立一个SrollView栏,在其中建立一个Grid用于技能的排序.然后建立一个Invisiable Widget,在其中建立起技能描述所需要的图标.名称.类型.描述及消耗. 将Widget复制多份,上下排好,然后向每个Widget加入SrollView属性,并且将SrollView栏中的卷

Unity3d - RPG项目学习笔记(十六)

上期功能实现了NPC模型的点击逻辑,现在开始建立药品的信息清单窗口. 功能需求: ①显示药品的信息列表,包含:物品得icon.物品名称.物品效果,物品价格: ②显示药品的购买按钮,实现点击功能: ③点击购买按钮后,显示输入框,输入框内输入数字后,有OK确认按钮. 构建过程如下: ①创建一个sprite,定义为商店背景: ②创建一个sprite,定义为药品信息行: ③在药品信息行内创建药品icon,再创建三个Label,依次向Label中输入名称.效果及价格: ④在药品信息行后加入购买按钮,添加按

Unity3d - RPG项目学习笔记(二十)

前期工程将装备信息导入到了工程中,且实现了在背包内鼠标移动显示物品提示信息,本次工程开始构建装备穿戴功能. 项目需求: 右键点击背包内的装备,使其穿戴在身上. 需求分析: 右键点击背包内的装备,注意,此时的装备还是背包内的一个物品,即是工程所定义的id为2001-2010的InventoryItem而已:需求可以抽象为右键点击背包内的一个物品,如果该物品是装备类,则在角色的EquipmentUI相应的位置生成一个与之图标相同的EquipmentItem,则视为“装备”了该物品. 具体实现: ①右

Unity3d - RPG项目学习笔记(二十三)

前期建立了装备信息及装配功能,现在开始着手建立技能系统. 类似于物品信息,我们首先需要设计好技能系统文本,设计好技能的分类. 设计过程中还是需要把技能作用及释放目标的分类做好,技能文本如下: 4001,致命一击,skill-02,伤害250%,SinglTarget,Attack,250,0,6,1,Swordman,1,Enemy,1.54002,格挡精通,skill-07,防御130%,Buff,Def,130,5,3,5,Swordman,3,Self,04003,战神咆哮,skill-0

Unity3d - RPG项目学习笔记(二十一)

上期工程实现了装备的穿上功能,但是还有些不完善,我们必须进行进一步完善. 需要完善的内容主要有2个: ①如果穿带前该栏有装备,那么需要将原装备退回至背包内: ②成功穿戴装备后,需要使背包内的相应装备数量-1,如果数量为0了,那么删除该格内的物品. 脚本如下: 实现功能①,只需要在Class EquipmentUI中的Dress方法中检测格子内是否有物品的条件的代码块更新为: if(item != null) { Inventory._instance.GetId(item.id); item.S

Unity3d - RPG项目学习笔记(十一)

前期工程已经构建了背包.格子.物品三者的关系.简单概括,就是背包管理格子,格子管理(生成.消除)物品,物品根据id或icon_name变更sprite.现在开始进行模拟物品的拾取功能.对Inventory脚本进行添加: Class Inventory { public GameObject InventoryItem; void Update( ) { if(Inpt.GetKeyDown(keycode.x)) { GetId(Randam.Range(1001,1004)); } } pub

Unity3d - RPG项目学习笔记(八)

上期工程实现了任务UI的构建与交互,本日总结指针的处理. 需求:在不同物体上指针不同.具体分类有:常规.NPC.攻击.锁定.拾取五种. 首先设定前两种,思路:设置更换指标方法,在NPC类中调用方法,脚本如下: ①创建GameSetting类,构建一个单例模式应用 Class GameSetting { public static GameSetting _instance; public Texture2D normal_cursor; public Texture2D NPC_Talk_cur

Unity3d - RPG项目学习笔记(二十八)

前期工程我们终于实现了技能列表的显示,嗯,终于可以看到角色的技能啦.但是依照现在的尿性,你不做出快捷栏的话,这些技能都是只能看的.为了更好的释放技能/使用物品,现在开始制作快捷栏. 那么首先,我们必须持有一个快捷栏. 一.建立快捷栏 首先现建立一个Invisiable Wiedgt,命名为ShortCutUI,然后在内部建立6个UISprite,将图标定义为Grid,加上BoxCollider,这样我们初步的快捷栏就做好了. 二.实现技能的拖动 先明确一个概念,基于最优方案,一定是将技能的图标拖

Unity3d - RPG项目学习笔记(四)

经过上述工程,实现了角色的移动功能.但是经过测试,发生了BUG,当角色因地形或其他遮蔽无法顺利抵达TargetPosition时,角色就会一直朝面向方向走下去. 这明显是不符合要求的. 我们把角色运动过程进行分解如下: 鼠标按下 → 确定目标点 → 鼠标松开 → 角色转向 → 计算角色与目标点距离 → 角色前进 → 角色到达目标范围 → 角色停止 明显,角色到达目标范围永远返回false,因为角色的朝向在鼠标松开那一刻便已经决定了,如果沿此方向不能达到目标点,那么角色就会超过最小范围圈,一直运动