游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1717|回复: 4

摄像机问题.

[复制链接]

30

主题

89

帖子

91

积分

注册会员

Rank: 2

积分
91
发表于 2010-11-25 06:06:00 | 显示全部楼层 |阅读模式
3D游戏大师技巧第419页代码(DEMOII7_6.cpp)有:
if (keyboard_state[DIK_UP])
   {
   // move forward 为什么是这样计算?

   cam.pos.x += tank_speed*Fast_Sin(cam.dir.y);
   cam.pos.z += tank_speed*Fast_Cos(cam.dir.y);
}
tank_speed抛弃,如果抛弃tank_speed;
cam.pos.x +=Fast_Sin(cam.dir.y);
cam.pos.z +=Fast_Cos(cam.dir.y);

看不出为什么这样计算摄像机新的坐标呀..

34

主题

844

帖子

1755

积分

金牌会员

Rank: 6Rank: 6

积分
1755
发表于 2010-11-25 11:55:00 | 显示全部楼层

Re:摄像机问题.



关键是对 tank_speed 的理解。
依我猜测,它表示“一帧时间里的移动距离”,也就是“距离/一帧时间”。
一帧时间=1秒/60帧=1/60妙。

这个60是在“一般情况”下的“PC显示器”帧数。
如果是TV的话,NTSC制应该是29.97,PAL制应该是25。
如果是Flash的话,可以是15或者10或者更低。

纯属瞎猜,楼主勿信!

30

主题

89

帖子

91

积分

注册会员

Rank: 2

积分
91
 楼主| 发表于 2010-11-25 19:34:00 | 显示全部楼层

Re:摄像机问题.

只能这样理解了.

30

主题

89

帖子

91

积分

注册会员

Rank: 2

积分
91
 楼主| 发表于 2010-11-25 21:05:00 | 显示全部楼层

Re:摄像机问题.

我想了下,这是正解.
tank_speed.这个值,可以理解为每帧物体移动的距离.

因为camera跟着tank.因此,把tank_speed当成要移动的距离.tan.dir.y角度.
cam.pos.x +=tank_speed * cos(tan.dir.y);

由于,我们知道了距离,知道了角度,就可以求出新坐标的各个分量了.
如果这样写:
cam.pos.x +=cos(tan.dir.y);
则是把tank_speed.看成1.

snghun,坦克,画的很形象呀.怎么不用以前的号了..

34

主题

844

帖子

1755

积分

金牌会员

Rank: 6Rank: 6

积分
1755
发表于 2010-11-26 00:29:00 | 显示全部楼层

Re:摄像机问题.

啊?
我练小号啊。
大号满级了。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-8-17 17:05

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表