gpt4 book ai didi

math - 无法让我的对象指向鼠标

转载 作者:行者123 更新时间:2023-12-04 06:53:40 24 4
gpt4 key购买 nike

我在一个速成类(class)项目中使用 SDL 和 OpenGL 的组合来自学这一切是如何工作的。我真的只对 OpenGL 作为在 2D 游戏中使用加速的一种方式感兴趣,所以我只需要它在 2D 平面中工作。

今天我的当前问题遇到了很多问题,我希望在单击鼠标按钮时有一个对象指向鼠标,然后在抬起鼠标后保持指向该方向。

void Square::handle_input() {
//If a key was pressed
if( event.type == SDL_KEYDOWN ) {
//Adjust the velocity
switch( event.key.keysym.sym ) {
case SDLK_UP: upUp = false; yVel = -1; break;
case SDLK_DOWN: downUp = false; yVel = 1; break;
case SDLK_LEFT: leftUp = false; xVel = -1; break;
case SDLK_RIGHT: rightUp = false; xVel = 1; break;
case SDLK_w: wUp = false; sAng = 1; break;
case SDLK_s: sUp = false; sAng = -1; break;
}
}
//If a key was released
else if( event.type == SDL_KEYUP ) {
//Adjust the velocity
switch( event.key.keysym.sym ) {
case SDLK_UP: upUp = true; yVel = 0; break;
case SDLK_DOWN: downUp = true; yVel = 0; break;
case SDLK_LEFT: leftUp = true; xVel = 0; break;
case SDLK_RIGHT: rightUp = true; xVel = 0; break;
case SDLK_w: wUp = true; sAng = 0; break;
case SDLK_s: sUp = true; sAng = 0; break;
}
}
//If a mouse button was pressed
if( event.type == SDL_MOUSEBUTTONDOWN ) {
switch ( event.type ) {
case SDL_MOUSEBUTTONDOWN: mouseUp = false; mousex == event.button.x; mousey == event.button.y; break;
case SDL_MOUSEBUTTONUP: mouseUp = true; break;
}
}
}

然后在我的 Object::Move 调用结束时调用它,它也处理 x 和 y 平移
if (!mouseUp) {
xVect = mousex - x;
yVect = mousey - y;

radAng = atan2 ( mousey - y, mousex - x );
sAng = radAng * 180 / 3.1415926l;
}

现在,当我单击对象时,它会转向并面向左下角,但不再改变方向。我真的很感激我能在这里得到的任何帮助。我猜这里可能存在状态与轮询事件的问题,但从我所经历的所有教程中,我很确定我已经解决了这个问题。我刚刚碰壁,我需要一些建议!

最佳答案

我假设您希望对象在按住鼠标按钮时保持指向鼠标的位置。要解决此问题,您必须在每次移动鼠标时更新鼠标位置。

添加一些与此类似的代码:

if( event.type == SDL_MOUSEMOVE ) {
// update the mouse position here using event.???.x / y
}

请注意,我这里没有 SDL 引用,所以我不能给你确切的成员,但这应该会有所帮助。

注意:我也猜测你的按钮处理代码会有问题。您有一个 if 语句检查 event.type 中的一个值, 但是在它的主体内部你有一个带有两个值的 switch 语句。只会执行这些值中的一个 - 您可能应该考虑只为按钮按下/按钮按下事件使用 2 个单独的 if 语句。

关于math - 无法让我的对象指向鼠标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2770962/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com