0
我想讓我的物體跟隨我的鼠標所在,就像點擊遊戲一樣。問題是,雖然我可以讓我的物體移動到鼠標點擊的位置,但我無法順利完成。例如,我想從point A to point B移動我的對象。我可以將它以45°角移動,直到它與我的鼠標點擊的軸相同,然後讓它直接移動到另一個軸like this。但我無法弄清楚如何讓它平穩移動,like this。用鼠標平滑移動物體
將我的對象與此:
private void Game_MouseMove(object sender, MouseEventArgs e)
{
if (IsMouseDown == true)
{
_xClick = e.Location.X;
_yClick = e.Location.Y;
timerClickMovement.Enabled = true;
}
}
private void Game_MouseDown(object sender, MouseEventArgs e)
{
IsMouseDown = true;
}
private void Game_MouseUp(object sender, MouseEventArgs e)
{
IsMouseDown = false;
}
private void timerClickMovement_Tick(object sender, EventArgs e)
{
if (_x != _xClick || _y != _yClick)
{
//_x and _y is the location of the object I want to move.
if (_x > _xClick)
{ _x--; }
else if (_x < _xClick)
{ _x++; }
if (_y > _yClick)
{ _y--; }
else if (_y < _yClick)
{ _y++; }
Invalidate();
}
else
{ timerClickMovement.Enabled = false; }
}
我能做些什麼,使運動更直接?
根據距離和x與y之間的差值來計算運動。然後不要只移動1個像素,按「差異水平」移動。例如如果x和xtarget相距100px,並且y和ytarget每移動x 1px,y 2px每個刻度 – weberik
您的意思是將較大的數字除以較小的數字,數字每一步?因爲我已經嘗試過了,並且我一直得到一個零錯誤除法,儘管我在if語句中加入了一個if語句,如果兩個變量都沒有0,那麼只會進行計算。 – user3303233
是啊,像_xdistance = _xClick - x,y相同,然後_xstepSize = _xdistance/_ydistance;那麼x + = _ xStepSize而不是x ++,shoud可以工作,但不是很優雅,只有在_xClick高於x時纔有效 – weberik