关于2.5d游戏 2.5d场景 3d人物 摄影机的设置和旋转的问题

背景使用tiledmap制作的2.5D的场景 人物用splite3d加载起来
第一个问题摄影机的设置 因为背景图是2.5D的所以用默认摄影机,3D人物就创建了正交摄影机
_camera = Camera::createOrthographic(s.width, s.height, 0, 1000);
_camera->setCameraFlag(CameraFlag::USER2);
_camera->setPosition3D(Vec3(0.0f, 1.0f, 0.0f));
_camera->lookAt(Vec3(0.0f, 0.0f, 0.0f));
为什么这边position不是 0,1,1 45度角的,在地图做移动的时候会产生大问题,地图移动导致人物的位置出错,因为地图的偏移像素和人物的偏移像素不同,地图一个像素 人物需要移动45度角2的平方根像素,就因为这个问题所以我打算人物自己做旋转,摄影机默认在正面
我这样做是否正确?

这样做虽然解决了我移动地图,人物跟着移动的问题,但是导致了另外一个问题,人物偏移角度的问题
因为我们是2.5D的游戏,人物默认应该是先Y轴45度角转动,然后再X轴45度角转动,sprite->setRotation3D(Vec3(45.0f, 45.0f, 0.0f));
但是这样会先X轴45度转动,Y轴45度转动,导致人物Z轴也转动了,问题大大的,看了API感觉没有函数可以处理,那个setRotationQuat目前不理解所以不敢乱用
求指点!!!

1赞

其实就两个问题

  1. 2.5D场景+3D人物 人物的摄影机怎么设置比较好?
  2. splite3d是否有函数支持顺序转动

这个就是错误的图片 x 45度正确 y 45度正确 x y同时45度错误

已经用Quaternion解决

这里说明下问题 主要是对3D的旋转不了解 导致的 一种理解就是坐标轴和人是一起旋转的 一种理解就是摄影机逆旋转方向旋转 (旋转依赖坐标和世界平面坐标不是同一条)
另外关于摄影机放置的问题 如果有人有更好的见解求解答谢谢!

我也碰到这个问题 怎么解决的?