字符 Z 旋转
Character Z Rotation
我知道这是一个非常愚蠢的问题,但我就是想不通。
var x = pressed('left') - pressed('right') // obvious (0 = nope, 1 = left, -1 = right)
var z = pressed('up') - pressed('down' ) // also obvious
player.rotation.y = somehowGetRotationInRadians;
问题是,我太笨了,不知道如何从这两个变量中获取角色的旋转。我打赌有一些平均和 π 涉及,但我不知道如何。
我不知道标签的相关性如何。
在当前状态下更具体你的问题没有多大意义
- 表示你想通过方向键控制某个对象(玩家)
- 我现在假设是 2D
所以你需要的是:
对象位置和方向数据
struct plr_object
{
double x,y; // position in pixels or meters or whatever
double a; // angle in radians
} plr;
- 这必须是持久的,所以全局或静态变量...
- 或本地全局变量
- 或引用它
键盘事件(或某些计时器)
double da=5.0*M_PI/180.0; // rotation speed
double dl=5.0; // movement speed
bool _redraw=false;
// handle rotation
if (pressed('left' )) { plr.a+=da; redraw=true; }
if (pressed('right')) { plr.a-=da; redraw=true; }
// handle movement
if (pressed('up' )) { plr.x+=dl*cos(plr.a); plr.y+=dl*sin(plr.a); redraw=true; }
if (pressed('down' )) { plr.x-=dl*cos(plr.a); plr.y-=dl*sin(plr.a); redraw=true; }
if (_redraw) redraw the scene ...
重画
- 在重绘中你必须处理对象的角度
- 所以它是旋转的
- 为此使用变换矩阵,或者如果您的对象只是一些简单的 GDI,例如
- 圆+线就画出旋转后的方向显着部分
我知道这是一个非常愚蠢的问题,但我就是想不通。
var x = pressed('left') - pressed('right') // obvious (0 = nope, 1 = left, -1 = right)
var z = pressed('up') - pressed('down' ) // also obvious
player.rotation.y = somehowGetRotationInRadians;
问题是,我太笨了,不知道如何从这两个变量中获取角色的旋转。我打赌有一些平均和 π 涉及,但我不知道如何。
我不知道标签的相关性如何。
在当前状态下更具体你的问题没有多大意义
- 表示你想通过方向键控制某个对象(玩家)
- 我现在假设是 2D
所以你需要的是:
对象位置和方向数据
struct plr_object { double x,y; // position in pixels or meters or whatever double a; // angle in radians } plr;
- 这必须是持久的,所以全局或静态变量...
- 或本地全局变量
- 或引用它
键盘事件(或某些计时器)
double da=5.0*M_PI/180.0; // rotation speed double dl=5.0; // movement speed bool _redraw=false; // handle rotation if (pressed('left' )) { plr.a+=da; redraw=true; } if (pressed('right')) { plr.a-=da; redraw=true; } // handle movement if (pressed('up' )) { plr.x+=dl*cos(plr.a); plr.y+=dl*sin(plr.a); redraw=true; } if (pressed('down' )) { plr.x-=dl*cos(plr.a); plr.y-=dl*sin(plr.a); redraw=true; } if (_redraw) redraw the scene ...
重画
- 在重绘中你必须处理对象的角度
- 所以它是旋转的
- 为此使用变换矩阵,或者如果您的对象只是一些简单的 GDI,例如
- 圆+线就画出旋转后的方向显着部分