私はLibgdxで簡単なゲームを作っています。問題は、デスクトップ上でコードは正常に動作しますが、Androidでは動作しないことです(Galaxy S6)。 ゲームでは、デバイスの中心を中心に指で回転します(幅/ 2、高さ/ 2)。あなたが表示されている円を回転させるユーザーの入力はAndroid上でデスクトップと同じように動作します
touchpoint.set(Gdx.input.getX(),Gdx.input.getY());
speicher1 = (float)((Math.atan2 (touchpoint.x - width/2, -(touchpoint.y - height/2))*180.0d/Math.PI))+180; //Touchpunkt Gradzahl zur Mitte
この計算された天使と:あなたは触れポイントが認識されており、このタッチポイントと中心との間の角度が計算され、speicher1に保存されます(それは常に0〜360です)画面上。これらはすべて両方でうまく動作します(デスクトップ、Android)。たとえば、指を180°に置くと、円は即座にこの点まで回転します。しかし、それは私が欲しいものではありません。あなたが指を動かすときだけそれは回転するはずです。ですから、どこに触れてもサークルは回転しません。ドラッグを開始したときだけです。うまくいけば私はあなたにこれを明らかにすることができました:D。 は、私は、このためのソリューションを作っ:
touchpoint.set(Gdx.input.getX(),Gdx.input.getY());
speicher1 = (float)((Math.atan2 (touchpoint.x - width/2, -(touchpoint.y - height/2))*180.0d/Math.PI))+180; //Toucpunkt Gradzahl zur Mitte
if (Gdx.input.justTouched()) {
speicher2 = 360-(speicher1 - kcc.getCcdegreee());
}
speicher1 = speicher1 + speicher2;
while (speicher1 >= 360) {
speicher1 -= 360;
}
kcc.setCcdegreee(speicher1);
[KCCは、サークルのすべての情報が(テクスチャ、サイズ、位置、角度(Ccdegree))に保存されている私のクラスである]
私はこの問題を解決しjustTouchedメソッドを使用して、このポイントを「開始ポイント」として作成しました。今問題が出てきますが、それはデスクトップでうまくいきますが、Androidではうまくいきませんか?
コード全体:
public void render(SpriteBatch sb, SpriteBatch textsb) {
//Wenn getouched(gedreht wurde)
if (Gdx.input.isTouched()) {
handleInput();
}
sb.begin();
//COLORCIRCLE
sb.draw(kcc.getCc(),kcc.getCcposition().x,kcc.getCcposition().y,kcc.getCcwidth()/2,kcc.getCcwidth()/2,kcc.getCcwidth(),kcc.getCcheight(),1,1,-kcc.getCcdegreee(),true);
sb.end();
}
[ディスプレイがタッチされた場合、私は見つけるRenderメソッドを算出天使と画面上に円を描画]
ハンドル入力方式:
protected void handleInput() {
touchpoint.set(Gdx.input.getX(),Gdx.input.getY());
speicher1 = (float)((Math.atan2 (touchpoint.x - width/2, -(touchpoint.y - height/2))*180.0d/Math.PI))+180; //Toucpunkt Gradzahl zur Mitte
if (Gdx.input.justTouched()) {
speicher2 = 360-(speicher1 - kcc.getCcdegreee());
}
speicher1 = speicher1 + speicher2;
while (speicher1 >= 360) {
speicher1 -= 360;
}
kcc.setCcdegreee(speicher1);
}
私が言ったように、すべてがデスクトップ上では完全に動作しますが、Androidでは動作しません。私は誰かがこれのための解決策を持っていること、または自分の間違いを見つけることを望む。