[英]Make my object move left and right continuously c#
所以我創建了一個怪物,希望在x = 156和x = 501之間前后左右移動。這是到目前為止我在move()方法中所做的事情:
public void move()
{
int left = 156;
int right = 501;
if (left <= x)
{
x++;
}
if (x >= 501)
{
x -= 1;
}
}
然后我使用計時器調用該方法
private void tmr2_Tick(object sender, EventArgs e)
{
foreach (Monster m in monsters_)
{
m.move();
}
screen.Refresh();
}
這行不通。 有人可以幫忙。 謝謝
除了坐標X和Y外,怪物還必須擁有一個屬性,我們將其稱為“方向”。 當怪物達到目標之一時,您可以更改“方向”屬性,然后才調整坐標。
這可能為您完成工作
public class Monster
{
private const int MIN_X = 156;
private const int MAX_X = 501;
private int _x;
//your TL(probably) will tell you to use Enum
private bool _toLeft;
public Monster()
{
_toLeft = false;
_x = MIN_X;
}
public void Move()
{
if (_toLeft)
{
_x--;
}
else
{
_x++;
}
CheckEdges();
}
private void CheckEdges()
{
if (_x == MAX_X || _x == MIN_X)
_toLeft = !_toLeft;
}
}
您在代碼中缺少方向性的概念。 您可以通過數百種方式來完成此操作,因此在這里我不會編寫代碼。
但是,一旦x等於501,就將其值減一,因此在下一次調用時,其值為500,因此將其重置為501,依此類推。 這就是為什么它停止運動的原因。 您需要更改邊緣的方向,因此增加或減少X直到碰到另一條邊緣。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.