zoukankan      html  css  js  c++  java
  • Unity3d

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

    今日总结到此为止。

  • 相关阅读:
    Kivy / Buildozer VM Ubuntu不能连接到网络的问题解决
    创建PHP组件(composer)
    uniapp基础
    标准js和浏览器js的区别(uniapp)
    swagger api工具 PHP组件 ---- 1
    阿里云视频点播--事件通知
    直接网页打印出现a标签的地址解决办法
    阿里云视频直播--直播转点播--实践2
    阿里云视频直播--直播转点播--实践1
    阿里云视频直播--直播转点播
  • 原文地址:https://www.cnblogs.com/yanbenxin/p/5799125.html
Copyright © 2011-2022 走看看