新的摄像机控制器
#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
Uh oh!
There was an error while loading. Please reload this page.
-
这两天写 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