我只是学习C#而我正在尝试制作2D游戏。我正处于我的Form1设置了一个' PictureBox'对于玩家和玩家类的开始:
class Player
{
private string _name;
private int _health;
internal Player(string name, int health = 100)
{
_name = name;
_health = health;
}
int X = 0;
internal void Draw()
{
updateInput();
Draw();
}
internal void updateInput()
{
if(Keyboard.IsKeyDown(Key.Right))
X = 1;
else if (Keyboard.IsKeyDown(Key.Left))
X = -1;
else
X = 0;
}
}
有一个PictureBox" pb_play"其中包含主窗体上的角色精灵。我尝试将其访问修饰符设置为公共,但这没有帮助。我希望通过X值变为什么来改变角色的位置。所以我试图基本上访问该类形式的成员。
我试图在draw方法中执行此操作,因此它将更新输入,然后它将设置位置,然后重复Draw方法,不断循环。
如果有更好的方法,请随时教育我。我该如何解决这个问题?
编辑:好的,我将方法移动到用户界面,如评论所述。这是我的,但精灵拒绝移动:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
Draw();
}
int X = 0;
internal void Draw()
{
updateInput();
pb_play.Location = new Point((pb_play.Location.X + X), 0);
Draw();
}
internal void updateInput()
{
if (Keyboard.IsKeyDown(Key.Right))
X = 5;
else if (Keyboard.IsKeyDown(Key.Left))
X = -5;
else
X = 0;
}
}
答案 0 :(得分:0)
我用计时器来解决问题:
internal void Draw()
{
pb_play.Location = new Point((pb_play.Location.X + X), (pb_play.Location.Y + Y));
}
internal void updateInput()
{
if (Keyboard.IsKeyDown(Key.Right))
X = 1;
else if (Keyboard.IsKeyDown(Key.Left))
X = -1;
else
X = 0;
if (Keyboard.IsKeyDown(Key.Up))
Y = -1;
else if (Keyboard.IsKeyDown(Key.Down))
Y = 1;
else
Y = 0;
}
private void timer1_Tick(object sender, EventArgs e)
{
updateInput();
Draw();
}