• Unity3d


    前期工程已实现了角色的选择, 现在开始进行制作角色在游戏场景的控制功能。

    控制功能一: 鼠标点击地面产生点击效果

    思路:读取鼠标点击位置,如果点击位置是地面,生成点击效果。

    则明显需要使用射线检测,用于检测射线与地面的碰撞信息,则脚本如下:

    public GameObject Click_Effect;  //定义游戏物体点击效果,将Prefabs赋值给变量

    void upDate()

    {

       if(Input.GetMouseDown(0))

        {

        Ray ray = camera.main.ScreenPiontToRay(Input.MousePosition);

        RaycastHit hitinfo;

        bool isCollider = Physics.Raycast(ray, out hitinfo );

        if( isCollider &&  hitinfo.collider.tag == "Ground")

        {

              GameObject.Instantiate(Click_Effect,hitinfo.point,Quaternion.identity); //注意此处的角度使用的是四元数 Quaternion.identity

        }

        }

    }

    这样就可以实现了点击地面出现点击效果的情况。

    控制功能二:角色朝向点击地点的方向

    思路:使用transform.LookAt()方法,找到目标地点的Vector3,在鼠标按下的情况下,进行朝向变化,脚本如下:

    private Vector3 targetPosition; //定义目标地点

    private bool isMoving = false; //定义移动状态标示位

    在updata中 if(Input.GetMouseDown(o)) 中加入移动标示位 isMoving = true;

    构建方法CharacterLook(),如下:

    void  CharacterLook( Vector3 hitPosition )

    {

         targetPosition = hitPosition;

         targetPosition = new Vector3( hitPosition.x,  tranform.position.y,hitpoint.z ); //注意:人物转向只发生在(x,z)平面,因此此处Y轴需定义为人物所在Y轴

         tranfrom.LookAt(targetPosition);

    }

    在Updata中加入条件检测

    if(Input.GetMouseUp(0))

    {
          isMoving = false;

    }

    if(isMoving)

    {

        Ray ray = camera.main.ScreenPiontToRay(Input.MousePosition);

        RaycastHit hitinfo;

        bool isCollider = Physics.Raycast(ray, out hitinfo );

        if( isCollider &&  hitinfo.collider.tag == "Ground")

        {

              CharacterLook(hitinfo.point);

        }

    }

    这样就可以实现了角色的目视朝向以及点击地面产生点击效果的功能了、

    今日的总结到此为止。

  • 相关阅读:
    【Jest】笔记二:Matchers匹配器
    【爬虫】如何用python+selenium网页爬虫
    【mysql-server】遇到的坑
    【puppeteer】前端自动化初探(一)
    强制360谷歌使用谷歌内核
    实时获取input输入框中的值
    什么是单页面
    如何更改Apache的根目录指向
    iphone上点击div会出现半透明灰色背景以及margin失效
    event.currentTarget和event.target的区别
  • 原文地址:https://www.cnblogs.com/yanbenxin/p/5782904.html
Copyright © 2020-2023  润新知