请教关于游戏中方向控制的问题

gamenpc 2010-03-16 12:51:57
某些第三人称游戏的摄像机的朝向是固定的,按上角色向上移动,而不需考虑摄像机的观察角度,那么如果游戏中可以给用户按某个键就旋转摄像机,那么这些方向按键需要如何转换呢?例如旋转摄像机后按上按键角色就向下移动。。。
...全文
100 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
张赐 2010-03-16
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 gamenpc 的回复:]
本地坐标吗?这个没有试过,请问怎样令物体在本地坐标与世界坐标间相互转换呢?
另外是不是还有其他方法来实现呢?例如乘以或者除以摄像机朝向矩阵某个数之类的。
关于旋转控制我自从参考书里面找到类似的:
float Facing = 0.0f;// 角色所面对的方向(正z轴)
// 左旋转
if(Keyboard.GetKeyState[KEY_LEFT] == TRUE)
Facing -=……
[/Quote]

关于本地坐标和世界坐标的转换,楼主可以参考我blog上的其他文章,在HTR分析那篇文章中有详细说明

或者楼主查找关于其次坐标变换的内容
gamenpc 2010-03-16
  • 打赏
  • 举报
回复
本地坐标吗?这个没有试过,请问怎样令物体在本地坐标与世界坐标间相互转换呢?
另外是不是还有其他方法来实现呢?例如乘以或者除以摄像机朝向矩阵某个数之类的。
关于旋转控制我自从参考书里面找到类似的:
float Facing = 0.0f;// 角色所面对的方向(正z轴)
// 左旋转
if(Keyboard.GetKeyState[KEY_LEFT] == TRUE)
Facing -= 0.01f;// 向左旋转0.01弧度

// 角色移动
XPos += (float)cos(Facing - 1.57f) * 移动步长;
ZPos += (float)-sin(Facing - 1.57f) * 移动步长;
张赐 2010-03-16
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 gamenpc 的回复:]
我的意思是如果未旋转摄像机的时候按上键角色是向上移动的,但旋转摄像机后由于观察的角度改变了,按上键在观察的视点里却不是向上移动,这个应该如何改进为旋转任意角度的摄像机,方向键的方向都是相对于当前视点来说都是绝对的方向,也就是上就是向上,下就是向下这样。
[/Quote]

不要用固定坐标来计算,用物体的本地坐标来计算
比如一个物体前方向是它本地坐标的X轴,那么不管这个物体旋转多少角度,只要旋转本地坐标没有改变,往本地坐标X轴移动的话,那么物体看起来始终就是往前的
gamenpc 2010-03-16
  • 打赏
  • 举报
回复
我的意思是如果未旋转摄像机的时候按上键角色是向上移动的,但旋转摄像机后由于观察的角度改变了,按上键在观察的视点里却不是向上移动,这个应该如何改进为旋转任意角度的摄像机,方向键的方向都是相对于当前视点来说都是绝对的方向,也就是上就是向上,下就是向下这样。
张赐 2010-03-16
  • 打赏
  • 举报
回复
按键的时候利用旋转矩阵旋转相机,按上下就利用位移矩阵控制角色位置就可以了

8,304

社区成员

发帖
与我相关
我的任务
社区描述
游戏开发相关内容讨论专区
社区管理员
  • 游戏开发
  • 呆呆敲代码的小Y
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧