我正在尝试在android中创建简单的自上而下滚动样式应用程序。基本上,图像位于屏幕的底部中心,不会移动。此背后的背景图像将根据设备的倾斜度移动。
如果我不移动(平移)图像并根据第一个图像中心点旋转图像,则背景图像会围绕此点正确旋转。但是,如果我完全翻译背景图像,则旋转不再准确。似乎旋转是基于图像Top,Left而不是屏幕左上角应用的,所以如果我将图像向下翻转100个单位,它现在会旋转100个单位,低于我想要的位置。
基本上我正在寻找一种方法来旋转图像,无论它位于屏幕上的哪个位置,屏幕上的固定位置永远不会改变。希望这会产生幻觉,即屏幕底部的图像正在移动,而事实上它正在移动的背景。感谢。
以下是我正在做的一些简单的代码片段,不确定它是否真的有用:
m_X& m_Y是保持设备倾斜的变量
那可怕的硬编码值264,628是我动画角色在屏幕底部的位置。 (我希望背景图像无论在何处转换为自动旋转)
Update Function:
protected void Update(float a_GameTime)
{
super.Update(a_GameTime);
m_CharacterAnimator.Update(a_GameTime);
if ((m_CurrentCharacterDirection.contains(LEFT) || m_CurrentCharacterDirection.contains(RIGHT)) && (m_X > 1.0f || m_X < -1.0f))
{
m_BackgroundWorldMatrix.preRotate(m_X * .05f, 264, 628);
}
if ((m_CurrentCharacterDirection.contains(FORWARD) || m_CurrentCharacterDirection.contains(BACKWARD)) && (m_Y > 1.0f || m_Y < -1.0f))
{
m_BackgroundWorldMatrix.postTranslate(0.0f, m_Y * -0.25f);
}
}
Draw Function:
protected void Draw(Canvas a_Canvas)
{
super.Draw(a_Canvas);
a_Canvas.drawBitmap(m_Background, m_BackgroundWorldMatrix, null);//, m_BackgroundWorldMatrix, null);
// Draw the animating Character
m_CharacterAnimator.Draw(a_Canvas);
}