2013-03-05 34 views
0

我要创建在屏幕的中间固定点固定的距离,当用户触摸并拖动它应该创建另一个屏幕上的一个点该点将遵循用户输入,但始终与其他固定点保持固定的距离。使游戏告诉我,当第二点是,准确的距离,同时拖动周围,我可以很容易地做到这一点。创建跟随触摸/鼠标输入,但仍从另一个固定点

public boolean touchDown(InputEvent event, float x, float y, int pointer, int button) { 
    setPosition(a, b); 
    return true; 
} 

所以基本上我想知道如何正确设置a(x坐标)和b(y坐标)。 我也不敢肯定,如果这更是一个数学问题或不libgdx(或Java为此事)有任何时髦的东西,我可以使用? 任何帮助表示赞赏。

+0

这是问的一个令人费解的方式http://stackoverflow.com/questions/ 300871 /最好的方式找到的,一个点上,一个圆上最近到一所赐点;你在那里有一个很好和简洁的答案。 – 2013-03-05 01:16:48

+0

是的,这解决了它。英语不是我的主要语言,所以我努力为我的问题找到合适的词汇。谢谢您的帮助。 – user2133812 2013-03-05 01:32:48

回答

0

,具体Libgdx支持,没有太多的,我知道的。这就是说,我认为你可以使用一个Vector2则归它(Vector2.nor()),那么你的“固定距离”乘以(Vector2d.mul()

private final Vector2 perimiterPoint = new Vector2(); 
private float centerX = ...; 
private float centerY = ...; 
private float radius = ...; // The "fixed distance" radius of your circle. 

public boolean touchDown(InputEvent event, float x, float y, int pointer, int button) { 
    perimiterPoint.set(x - centerX, y - centerY).nor().mul(circleRadius) 
    setPosition(perimiterPoint.x, perimiterPoint.y); 
    return true; 
} 
+0

它只能如果我有静点(0,0)在屏幕上,我遇到了一些问题,因为我是一个很值得新手程序员,仍然有很多东西要弄清楚,但在评论列表中的人的算法现在工作得很好。 – user2133812 2013-03-05 02:48:49

+0

如果您使用libgdx scene2d演员提防“屏幕空间”,“舞台空间”和“演员的空间”之间的差异(在x,y值是相对于那些之一,可以在它们之间进行转换)。 – 2013-03-05 04:12:29

相关问题