Я пытаюсь создать простое приложение в стиле «сверху вниз» в Android.В основном изображение находится в центре нижней части экрана, который не двигается.Фоновое изображение позади этого будет перемещаться в зависимости от наклона устройства.
Если я не перемещаю (не перевожу) изображение и вращаю его по первой центральной точке изображения, фоновое изображение вращается правильно вокругэта точка.Однако если я вообще перевожу фоновое изображение, вращение перестает быть точным.Похоже, что поворот применяется на основе изображений сверху, слева, а не слева вверху экрана, поэтому, если я перевожу изображение на 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);
}