我正在开发一款游戏引擎。它更复杂,但我会将环境减少到很小的情况,以便轻松解释我的问题:
我想表示更远的对象,移动速度不如屏幕附近的对象那么快,所以我这样做了:
view = new ImageView(context){
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
float currentScale = (Float) scaleX.getAnimatedValue();
float factor= currentScale/MAX_SCALE;
view.setX(view.getX()-((float)GameState.getInstance().getJoyX()*factor));
view.setY(view.getY()-((float)GameState.getInstance().getJoyY()*factor));
}
};
正如你所看到的,我计算了一个因素。最远的对象具有0.1f比例因子,而最近的对象具有4.0f比例因子,因此这些是因子的一些可能值:
0.1/4 = 0.025
0.5/4 = 0.125
1.0/4 = 0.250
2.0/4 = 0.500
4.0/4 = 1.000
当我乘以该因子的上移运动时,我可以重现最远的物体比最近的物体移动得慢。
问题是当物体太远时,运动不太现实,所以我需要帮助找到一个更现实的因素来增加物体的上下运动,并在移动时获得更真实的3D效果操纵杆。 p>
*游戏更复杂,y轴也出现在机芯中,但我用x轴解释它只是为了让它变得更简单。
谢谢