新的摄像机控制器
#173
Replies: 2 comments 3 replies
-
右键的时候不能同时上下和左右,有点不符合操作习惯。其余的确实比旧版的好。 |
Beta Was this translation helpful? Give feedback.
2 replies
-
多种输入对应一种效果,如果能有一个中间的抽象,应该会更好。像这个例子,wasd和鼠标左键都对应着pan,也许之后还会有触屏消息,手柄等。 |
Beta Was this translation helpful? Give feedback.
1 reply
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
这两天写 demo 时用了一下目前默认的摄像机控制器
ant.camera|camera_controller
,感觉手感怪怪的。所以我重新做了一个。因为这个默认模块之前不是我在维护,我担心破坏旧代码,所以我把我做的这个暂时放在 test/camera 里了。等 @junjie020 或 @actboy168 看过后再考虑合并为引擎的正式模块。
这次的摄像机控制器我没有直接处理鼠标和键盘消息,而是给了一组可以控制的参数,使用时可以直接修改这个表中的值就能修改摄像机:
摄像机用于第三人称场景,(x,y,z) 控制的是摄像机关注的焦点坐标。这里我们使用 xz 平面,所以一般修改 .x 和 .z 即可。
yaw 控制的是摄像机的旋转角度,使用的是角度单位。pitch 控制的是摄像机的俯仰角,同样是角度单位,0 表示平视,90 表示俯视。
distance 是摄像机到关注点的距离。
min/max 表可以用来控制以上参数的范围,控制器会使用这里的值截断。如果是 nil 就不截断。
另外,还可以通过 .delta.xxx 控制 xxx 参数的增量,这样方便做平滑运动。特别的是,.delta.x 和 .delta.z 并不直接对 .x 和 .z 修改,它会考虑旋转角 yaw 做一次变换。即,delta.x 和 delta.z 指的是沿镜头朝向的轴运动。
鼠标键盘的处理放在了 camera_demo.lua 里,它只是捕获输入消息,设置以上的值。
运行这个 demo :
Beta Was this translation helpful? Give feedback.
All reactions