こんにちはすべて私は小さな問題を抱えていますが、私にとっては大きな問題です。C#Strangeインクリメンタルバグ
まず、私はNPC
public void Update()
{
if (m_iMoveX != 0 || m_iMoveY != 0)
m_iFrame = (m_iFrame + 1) % 16;
else
m_iFrame = 0;
if (m_iPause > 0)
--m_iPause;
if (m_iMoveX > 0)
{
m_iPosX += 2;
m_iMoveX -= 2;
}
if (m_iMoveX < 0)
{
m_iPosX -= 2;
m_iMoveX += 2;
}
if (m_iMoveY > 0)
{
m_iPosY += 2;
m_iMoveY -= 2;
}
if (m_iMoveY < 0)
{
m_iPosY -= 2;
m_iMoveY += 2;
}
}
説明と呼ばれるクラスを持っています。 m_iMove
は、最初に歩いて移動した移動です m_iPos
はNPCの実際の座標です。
私がnpcウォークをすると、m_iMove + 32
に設定されます。更新中の 、iPos
増分、iMove
減分。 iMove
が0の場合、移動が完了します。
NPCはグリッド32x32ピクセルで歩いています。
は今、私は仕事の罰金だと思いますが、
iMove
は0実際には動きに等しいこのscreenshootを参照してください。 iPos
は96で、NPCの指揮です。
私は運動
pl.m_iMoveY += 32; //Increments iMove for the movement
pl.m_npcDirection = NPCDirection.Dowm; //Setup the face
if (pl.m_iMoveY > 32) //if i press KeyDown and iMove have a value > of 32
pl.m_iMoveY = 32; //Force to execute 32 pixel movement
この画面を参照してくださいをインクリメントするとき今NPC COORDSは何のために132ありますか?
このバグはありません。 私は移動のために32ピクセルをインクリメントします。 = 128
96 + 32が、私は132
を参照してください誰もがアイデアを持っていますか?