关于cesium for unity 的相机操控

最近使用cesium for unity做一个3d地图项目,目前cesium官方提供的unity版本的相机操控并没有js版本那样的旋转平移倾斜等功能,因此自己琢磨了一下,整了个勉强能用的东西,在此记录一下。

原理就是根据鼠标点击在地球上的位置进行操控

1、点击拖拽的核心代码

{Vector3 vPre = GetScreenPosition(mouseStartPosition, out tempDis);

            mouseEndPosition = Input.mousePosition
            if (mouseEndPosition == mouseStartPosition)
            {
                return;
            }
            Vector3 vCur = GetScreenPosition(mouseEndPosition, out tempDis);
            vPre.Normalize();
            vCur.Normalize();
            Quaternion qOut = new Quaternion();
            Vector3 vOut = new Vector3();
            Quaternion qCameraQuat = m_transform.rotation;
            Vector3 camPosition = cameraCurPos;
            CallLocationAndRotation(vPre, vCur, camPosition, qCameraQuat, ref vOut, ref qOut);
            m_transform.rotation = qOut;
            cameraCurPos = vOut;
            UpdateCamPos();
            mouseStartPosition = mouseEndPosition;

}

void CallLocationAndRotation(Vector3 _start, Vector3 _end, Vector3 _vloction, Quaternion _qCameraQuat, ref Vector3 _vOut, ref Quaternion _qOut)
    {
        Vector3 relativePosition = _vloction - centerPos;
        Vector3 move = Quaternion.Inverse(_qCameraQuat) * relativePosition;
        float angle = Vector3.Angle(_start, _end);
        Vector3 vecRotateAxis =

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值