前期工程已经实现了角色的移动以及镜头的控制。现在开始处理场景中的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就会自动退出去了。
今日总结到此为止。