2

У меня проблемы с плавным движением символов для 2-й игры, которую я делаю. Похоже, что при перемещении персонаж дважды. Вроде как это (его только один пиксель, хотя):Проблемы с движением 2D-текстуры

(() 
//{}\ ==> 
| || 

Игра работает на твердом 60 кадров в секунду, и мой монитор не проблема (я испытал это на нескольких мониторах).

Я использую скворец в данный момент, но у меня было это с тех пор, как я впервые посмотрел на игры (используя openGL). Я надеялся, что кто-то скажет мне, что мне не хватает. Вот мой код:

private var _x:Number = 20, _y:Number; 

public function update(delta:Number):void 
{ 
    if(gravity){ 
     _y += delta * 120; 
    } 

    if(_y + skin.image.height > game.stage.stageHeight){ 
     _y = game.stage.stageHeight - skin.image.height; 
     gravity = false; 
    } 

    if(right && left){ 
     skin.playAnimation("none"); 
    }else if(left){ 
     _x -= delta * speed; 
     skin.playAnimation("left"); 
    }else if(right){ 
     _x += delta * speed; 
     skin.playAnimation("right"); 
    } 

    //update skin 
    skin.update(delta, Math.round(_x), Math.round(_y)); 
} 

кожи Метод обновления:

public function update(delta:Number, x:int, y:int):void 
    { 
     image.x = x; 
     image.y = y; 
     if(currentAnimation){//this is texture switching (I tried without, still happens) 
      currentAnimation.update(delta); 
     }else{ 
      image.texture = textures[4]; 
     } 
    } 

Here это игра.

+0

попробуйте очистить/перерисовать родительский контейнер после перемещения – Misiakw

+0

Я думаю, что Starling/Stage3D делает это автоматически. Имеет ли это? – Duckdoom5

+0

Я никогда не работал с Starling/Stage3D, но это было бы моим первым предположением. Тем не менее стоит попытаться вызвать invalidateDisplayList() ou updateDisplayList() в родительском контейнере. – Misiakw

ответ

1

Основываясь на собственных экспериментах, а также на всех данных в комментариях, я думаю, что ореолы зависят от частоты кадров и самого компьютера.

Во-первых, и самое главное, когда я пробовал игру по ссылке, у нее было описанное призрачное изображение с полной частотой кадров 60. Однако, когда я пытался снять скринкаст для дальнейшего анализа, это заняло некоторый процессор, снижая частоту кадров примерно до 35 или 40. В этот момент ореол остановился.

Во-вторых, поскольку разные люди сообщают о различных событиях с описанным ореолом, я также думаю, что он имеет мало общего с отдельными компьютерами, вероятно, связанными с их доступной памятью и процессором, хотя это всего лишь теория , так как у меня нет никаких контрольных показателей.

В-третьих, я думаю, что часть его также уходит корнями в нейронауку, поскольку разные люди воспринимают анимацию по-разному.

Люди всегда говорят о желании повысить частоту кадров, но, честно говоря, чтобы исправить это, я бы рекомендовал снизить частоту кадров. Flash Professional CS6 имеет частоту кадров по умолчанию 24 FPS, и я никогда не испытывал проблемы с ореолом в моей памяти. Стоит отметить, что Flash-аниматоры обычно работают в 24 FPS.

С другой стороны, внешний вид, по сути, не является серьезной сделкой. Это один из тех недостатков графики, которые люди склонны игнорировать, подобно размытию движения, которое вы получаете на 24 пленках FPS, пока они не достигнут changed it to 48.

+0

Поскольку это единственный и лучший ответ, и вы приложили много усилий, я пойду вперед и дам вам свою награду; p Я думаю, вы правы: «Это один из тех недостатки графики, которые люди склонны игнорировать ». Вот почему я никогда не замечал этого в других играх, но с моими собственными играми я стараюсь извлечь максимум из этого. но, как я уже говорил, я думаю, что я в порядке с этим, так как я заметил, сколько игр имеет одну и ту же «проблему». – Duckdoom5

+0

Спасибо, Duckdoom5! Да, больше не обязательно лучше, хотя я думаю, что программисты склоняются к более высоким кадрам, потому что мы сопоставляем большие числа с лучшей производительностью (я заметил, что некоторые программисты нацелены на очень высокие частоты кадров). Аниматоры, с другой стороны, как я уже упоминал, любят придерживаться стандартных фейерверков фильмов: 24 и 48. Еще одно преимущество понизить частоты кадров? Меньше кадров, необходимых для достижения одной и той же анимации, таким образом, значительно легче контролировать скорость, используя фрейм COUNT вместо кадра SPEED. – CodeMouse92

+0

Я попробую более низкую частоту кадров, если ее не заметят, я сохраню ее. – Duckdoom5

0

Кажется, что все игры есть (я на самом деле никогда не замечал его в некоторых играх, где я его сейчас замечаю), и мне просто нужно жить с ним. Это не мое оборудование, это не мой монитор. Я попробовал это на многих компьютерах (хорошее для плохого оборудования), и он выглядит одинаково на всех компьютерах. Это выглядит хуже на компьютерах с плохой аппаратурой, но нет большой разницы.

Смежные вопросы