数学/物理学的游戏引擎问题(与近项目相关的远项目的移动)

时间:2017-02-10 19:52:49

标签: java android math game-engine physics

我正在开发一款游戏引擎。它更复杂,但我会将环境减少到很小的情况,以便轻松解释我的问题:

  • 使用简单视图在2D中制作游戏。一些观点即将进入屏幕。游戏引擎模拟那些视图进入屏幕,对视图进行scaleX和scaleY动画,这些视图将崩溃到屏幕上。
  • 游戏屏幕上有一个操纵杆,可以产生-10到+ 10px的移动,用户可以使用它来避开物体。
  • 如果您将操纵杆移动到最大权限,那么将向所有进入屏幕的对象添加+10,并且每10ms屏幕将重新绘制一次,因此,当您移动操纵杆时,每10ms对象将移动并且用户将具有避免对象的模拟3d效果。
  • 我想表示更远的对象,移动速度不如屏幕附近的对象那么快,所以我这样做了:

    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效果操纵杆。

*游戏更复杂,y轴也出现在机芯中,但我用x轴解释它只是为了让它变得更简单。

谢谢

0 个答案:

没有答案