android – 如何将 *** 纵杆角度和功率转换为视图x,我想移动?

android – 如何将 *** 纵杆角度和功率转换为视图x,我想移动?,第1张

概述我正在使用这个 *** 纵杆在我的屏幕上移动视图,因为我想做一个游戏. https://github.com/zerokol/JoystickView 我可以通过以下方式获得 *** 纵杆运动的角度和力量: joystick.setOnJoystickMoveListener(new OnJoystickMoveListener() { @Override pub 我正在使用这个 *** 纵杆在我的屏幕上移动视图,因为我想做一个游戏.

https://github.com/zerokol/JoystickView

我可以通过以下方式获得 *** 纵杆运动的角度和力量:

joystick.setonJoystickMoveListener(new OnJoystickMoveListener() {            @OverrIDe            public voID onValueChanged(int angle,int power,int direction) {                // Todo auto-generated method stub                angleTextVIEw.setText(" " + String.valueOf(angle) + "°");                powerTextVIEw.setText(" " + String.valueOf(power) + "%");                switch (direction) {                case JoystickVIEw.FRONT:                    directionTextVIEw.setText(R.string.front_lab);                    break;                case JoystickVIEw.FRONT_RIGHT:                    directionTextVIEw.setText(R.string.front_right_lab);                    break;                case JoystickVIEw.RIGHT:                    directionTextVIEw.setText(R.string.right_lab);                    break;                case JoystickVIEw.RIGHT_BottOM:                    directionTextVIEw.setText(R.string.right_bottom_lab);                    break;                case JoystickVIEw.BottOM:                    directionTextVIEw.setText(R.string.bottom_lab);                    break;                case JoystickVIEw.BottOM_left:                    directionTextVIEw.setText(R.string.bottom_left_lab);                    break;                case JoystickVIEw.left:                    directionTextVIEw.setText(R.string.left_lab);                    break;                case JoystickVIEw.left_FRONT:                    directionTextVIEw.setText(R.string.left_front_lab);                    break;                default:                    directionTextVIEw.setText(R.string.center_lab);                }            }        },JoystickVIEw.DEFAulT_LOOP_INTERVAL);

问题是,现在我不知道如何使用该角度和功率来移动我想在屏幕中移动的视图.

非常感谢你的帮助

解决方法 最简单的方法是将角度值转换为向量,如下所示:

x = Math.cos( angle );y = Math.sin( angle );

PS.确保角度为弧度.

然后使用以下方法标准化向量:

length = Math.sqrt( (x*x) + (y*y) );x /= length;y /= length;

现在,您将有一个标准化向量,表示棒移动的方向(正x值指向右,正y值指向上方).

一旦你有了这个,你可以将功率百分比应用到你选择的某个移动速度(moveSpeed)(根据你想要移动的速度),然后将结果值(currSpeed)应用到矢量:

currSpeed = moveSpeed * ( power / 100.0f );x *= currSpeed;y *= currSpeed;

现在只需通过向量的(x,y)移动视图.另请注意,根据您的移动方式,您还可以反转x和/或y值的符号.

编辑:如果您要实时应用移动(即每帧一次),您还需要使用自上次移动后经过的时间(即您的帧时间)来缩放移动.

总结

以上是内存溢出为你收集整理的android – 如何将 *** 纵杆角度和功率转换为视图x,我想移动?全部内容,希望文章能够帮你解决android – 如何将 *** 纵杆角度和功率转换为视图x,我想移动?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1125279.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-30
下一篇 2022-05-30

发表评论

登录后才能评论

评论列表(0条)

保存