吃鸡(遥杆)人物移动及相机跟随的实现

抽空做的一个小Demo,基本功能还是能实现的。 

1.左下遥杆控制移动

2.右下区域遥杆控制人物转向及相机跟随转向

3.右上遥杆控制视野(相机角度)

项目下载:https://download.csdn.net/download/weixin_42438547/10741404


 



懒省事,基本能省事就省事了,物体都是拖拽。 

 照着拖就行了

 


左下遥杆 

 /// <summary>
    /// 移动遥感协程
    /// </summary>
    /// <returns></returns>
    IEnumerator Move()
    {
        while (Input.GetMouseButton(0))
        {
            print("鼠标落下");
            //鼠标位置
            Vector3 mousePos = new Vector3(Input.mousePosition.x, Input.mousePosition.y, 0);
            //偏移量
            Vector3 offset = mousePos - center.transform.position;
            //限制坐标
            if (offset.magnitude > Range)
            {
                //偏移量=偏移量的.标准化*范围(标准化-即使变量值得大小更改为<系统默认的标准1>)
                offset = offset.normalized * Range;
            }
            //赋值给小圆盘(摇杆)
            centerObject.transform.position = center.transform.position + offset;
            //赋值给玩家
            PlayerObject.transform.position += new Vector3(offset.x / Range, 0, offset.y / Range) * Time.deltaTime * 5;
            //设置角色的朝向(朝向当前坐标+摇杆偏移量)
            // PlayerObject.transform.LookAt(new Vector3(transform.position.x + offset.x, PlayerObject.transform.position.y, PlayerObject.transform.position.z + offset.y));
            //停留一帧,避免死循环
            yield return null;
        }
        //摇杆回弹
        //1.使摇杆坐标=圆盘坐标
        centerObject.transform.position = center.transform.position;
        //2.使坐标偏移量=0
        centerObject.transform.localPosition = Vector2.zero;
    }

 

 方向遥感

  /// <summary>
    /// 方向遥感
    /// </summary>
    /// <returns></returns>
    IEnumerator FX()
    {
        fxoffset = Camera.main.transform.localEulerAngles - transform.localEulerAngles;
        while (true)
        {
            if(Input.GetMouseButton(0))
            {
                zx = true;
                pos1 = Input.mousePosition;
                if (pos2!=Vector3.zero)
             {
                    
                   
                    transform.localEulerAngles += new Vector3(0,pos2.x - pos1.x, 0)*0.5f;
                    Camera.main.transform.RotateAround(new Vector3(transform.position.x, Camera.main.transform.position.y, transform.position.z), Vector3.down, (pos1.x - pos2.x)*0.5f);

                   
                }
               
                pos2 = Input.mousePosition;
                
            }
            
            if(Input.GetMouseButtonUp(0))
            {
                offset = Camera.main.transform.position - transform.position;
                pos2 = Vector3.zero;
                zx = false;
            }
            yield return null;
        }
        


    }

视野遥感


 /// <summary>
    /// 视野遥感协程
    /// </summary>
    /// <returns></returns>
    IEnumerator SYYG()
    {
        rot = Camera.main.transform.localEulerAngles;
        pos = Camera.main.transform.position;
        while (Input.GetMouseButton(0))
        {
            sy = true;
            print("鼠标落下");
            //鼠标位置
            Vector3 mousePos = new Vector3(Input.mousePosition.x, Input.mousePosition.y, 0);
            //偏移量
            Vector3 offset = mousePos - ShiYe.transform.position;
            //限制坐标
            if (offset.magnitude > Range)
            {
                //偏移量=偏移量的.标准化*范围(标准化-即使变量值得大小更改为<系统默认的标准1>)
                offset = offset.normalized * Range;
            }
            //赋值给小圆盘(摇杆)
            SY.transform.position = ShiYe.transform.position + offset;
            //赋值给玩家
            // PlayerObject.transform.position += new Vector3(offset.x / Range, 0, offset.y / Range) * Time.deltaTime * 5;

            Camera.main.transform.localEulerAngles += new Vector3(-offset.y / Range, offset.x / Range, 0) * Time.deltaTime * 30;

            //需要限制下视野范围

            yield return null;
        }
        if (Input.GetMouseButtonUp(0))
        {
            sy = false;
            Camera.main.transform.localEulerAngles = rot;
            Camera.main.transform.position = pos;


        }
        //摇杆回弹
        //1.使摇杆坐标=圆盘坐标
        SY.transform.position = ShiYe.transform.position;
        //2.使坐标偏移量=0
        SY.transform.localPosition = Vector2.zero;
    }
}


项目下载:https://download.csdn.net/download/weixin_42438547/10741404

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值