首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Xbox360模拟杆角SDL

Xbox360模拟杆角SDL
EN

Stack Overflow用户
提问于 2014-03-13 23:02:25
回答 2查看 660关注 0票数 0

好的,我正在用SDL开发一个游戏引擎,用lua脚本编写openGL,我需要得到模拟棒的角度,用这个lua代码来确定2d炮的方向。

代码语言:javascript
复制
playerLookArrow.rotation = math.atan(logic:controllerAxisForce(3)/-logic:controllerAxisForce(4))

逻辑:控制器AXIS(int轴)返回

代码语言:javascript
复制
SDL_JoystickGetAxis(Joystick, AXIS);

问题是我的枪只能指向左边而不是左边和右边。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-03-14 02:26:24

您应该使用math.atan2,它为您执行此逻辑(http://www.lua.org/manual/5.1/manual.html#pdf-math.atan2):

代码语言:javascript
复制
playerLookArrow.rotation = math.atan2(
    logic:controllerAxisForce(3), 
    -logic:controllerAxisForce(4))

请注意,返回值以弧度表示(180 deg = Pi ),Pi为3.141592,巴黎圣母院3.1 :)

票数 0
EN

Stack Overflow用户

发布于 2014-03-13 23:17:58

我真的很蠢,我的问题是,我只能得到一个0到3.1之间的角度,所以我最后做的是

代码语言:javascript
复制
if logic:controllerAxisForce(4) <= 0 then
        playerLookArrow.rotation = math.atan(logic:controllerAxisForce(3)/-logic:controllerAxisForce(4))
    elseif logic:controllerAxisForce(4) > 0 then
        playerLookArrow.rotation = math.atan(logic:controllerAxisForce(3)/-logic:controllerAxisForce(4))+3.1
    end

所以,如果左边的模拟棒在右边,它只会增加3.1或180度的角度。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22392840

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档