2018-08-02 【案例学习】dungeon breaker(地牢破坏者)代码学习 01摄像机旋转

一.从摄像机旋转开始(我觉得最简单)。这个代码自己写的球面旋转,后面分析一下跟之前那个旋转的区别。
(tips01: float f; f += (endWantF - f) / 10; 在update中这样弄,会使自己的f慢慢达到endWantF的值)

1.实现思路:
首先有一个关于原点(0,0,0)的球面坐标数据结构SphericalVector


2018-08-02 【案例学习】dungeon breaker(地牢破坏者)代码学习 01摄像机旋转_第1张图片
image.png

然后通过鼠标来对摄像机的球面坐标进行改变


2018-08-02 【案例学习】dungeon breaker(地牢破坏者)代码学习 01摄像机旋转_第2张图片
image.png

然后获得人物的位置,人物位置加上球面坐标,就是摄像机坐标,然后使用LookAt函数来改变摄像机朝向。

image.png
image.png

2.结构:
相机移动的基类叫Orbit(轨道),如下:


2018-08-02 【案例学习】dungeon breaker(地牢破坏者)代码学习 01摄像机旋转_第3张图片
image.png

这个可以弄成适配器模式?(感觉跟这个名字比较对应)就是可以通过选择数据结构改变物体的轨迹,
这里面的数据结构是球面数据结构,也可以做一些正方体结构,椭圆结构,卫星轨迹结构,弹道飞行结构...
从这个角度看,这个继承就很有用了。
而我那个函数,直接调用很方便,但是只限定于一个球面旋转,对于一些较大的工程来说,还是它的代码更好。

你可能感兴趣的:(2018-08-02 【案例学习】dungeon breaker(地牢破坏者)代码学习 01摄像机旋转)