【发布时间】:2014-05-11 16:41:06
【问题描述】:
所以,最近我和我的两个队友开始了我们的考试项目。这是一个基本的 2D 跳台滑雪游戏。
我们之前在 Android 上进行过编程,但从未与游戏相关,我们掌握了使用线程创建动画的基本技术等等。但我们似乎遇到了扩展问题。
目前我们在可绘制文件夹中有一个分辨率为 1920x1080 的背景图像,我们正在使用 BitmapFactory 将背景图像缩放到用户的屏幕尺寸,这似乎工作正常,它完美地适合我们所有 3 种不同的智能手机。
正在创建玩家精灵从山上滑雪下来并从边缘跳下的动画,看起来非常有趣并且效果很好。为此,我只是将屏幕宽度和高度除以 100,然后使用 1% 屏幕宽度的百分比在 x 轴上以特定速度移动他,同样在 y 轴上以屏幕高度的 1% 移动他。
它适用于大多数手机,但由于某种原因它不适用于所有手机?我不明白为什么不呢?我的意思是数学应该总是有效的,不是吗?在一些手机上,他在山外的空中飞翔,而不是在正确的轨迹上。我不明白我错过了什么,但我怀疑它与屏幕格式或其他什么有关?
谁能告诉我这个?请记住,这是我们的第一个安卓游戏,所以是游戏开发的新游戏。
如果您事先有任何意见,感谢您的所有意见。
【问题讨论】:
-
我建议使用游戏引擎,这里提到了一些stackoverflow.com/questions/13071138/android-game-engine
-
无论您使用什么屏幕,都将播放器移动到相同的 deltax/deltay,只有在 Canvas 上绘图时 concat()使用每个屏幕不同的转换矩阵来创建 Canvas
-
我应该在前面提到,不允许使用任何引擎。关键是我们自己从头开始编码。 @Pskink 你介意放弃一个关于你如何去做的小例子的答案吗?如果这能解决我们的问题,我将不胜感激。
-
计算转换矩阵,如果一个屏幕比其他屏幕大 1.5,那么它的转换矩阵应该缩放 1.5 倍,通过调用 canvas.concat(matrix) 在 onDraw 中使用该矩阵,绘制原始位图,绘制玩家精灵,瞧
-
所以我应该在 draw 方法中做的第一件事是创建一个矩阵,设置矩阵的比例并将其添加到画布上(假设视图加载后只有一次?)。然后画出我需要的所有图像?如果理解正确,我应该只加载原始大小的图像并使用它,还是应该花时间调整它们的屏幕大小?
标签: android scale scaling image-scaling