使对象移动 C#
Making An Object Move C#
我正在用 C# 制作游戏,我正在尝试让我的纹理移动。我需要一些帮助和建议来使纹理移动。这是我到目前为止使用的。
public float InitialTime { get; set; }
public Vector2 InitialPosition { get; set; }
public Vector2 InitialVelocity { get; set; }
public Vector2 Position(GameTime time)
{
float t = (float)time.TotalGameTime.TotalSeconds = InitialTime;
return InitialPosition + t * InitialVelocity;
}
在“float t
”行,出现以下错误,
Error CS0131 The left-hand side of an assignment must be a variable,
property or indexer
你的问题是因为:
float t = (float)time.TotalGameTime.TotalSeconds = InitialTime;
赋值运算的两边都需要有有效的语法。如果你要隔离第二个分配,它看起来像这样:
(float)time.TotalGameTime.TotalSeconds = InitialTime;
这不仅语法无效,而且毫无意义。
我想你进行转换的原因是因为 TotalSeconds
和 InitialTime
是双打,你需要将它们转换为浮点数。有两种方法可以做到这一点。
您可以将作业分成两行:
time.TotalGameTime.TotalSeconds = InitialTime;
float t = (float)time.TotalGameTime.TotalSeconds;
或者,如果您坚持在一行中执行此操作,请使用括号对您的操作进行分组:
float t = (float)(time.TotalGameTime.TotalSeconds = InitialTime);
编辑:
话又说回来,我一直假设双重分配是故意的。您可能打算做的是从 TotalTime
中减去 InitialTime
以获得当前时间戳。在那种情况下,这只是一个拼写错误的简单修复:
float t = (float)(time.TotalGameTime.TotalSeconds - InitialTime);
(请注意,如果 TotalSeconds
和 InitialTime
是双精度数,您将需要使用括号将运算转换为浮点数,就像我所做的那样。)
我正在用 C# 制作游戏,我正在尝试让我的纹理移动。我需要一些帮助和建议来使纹理移动。这是我到目前为止使用的。
public float InitialTime { get; set; }
public Vector2 InitialPosition { get; set; }
public Vector2 InitialVelocity { get; set; }
public Vector2 Position(GameTime time)
{
float t = (float)time.TotalGameTime.TotalSeconds = InitialTime;
return InitialPosition + t * InitialVelocity;
}
在“float t
”行,出现以下错误,
Error CS0131 The left-hand side of an assignment must be a variable, property or indexer
你的问题是因为:
float t = (float)time.TotalGameTime.TotalSeconds = InitialTime;
赋值运算的两边都需要有有效的语法。如果你要隔离第二个分配,它看起来像这样:
(float)time.TotalGameTime.TotalSeconds = InitialTime;
这不仅语法无效,而且毫无意义。
我想你进行转换的原因是因为 TotalSeconds
和 InitialTime
是双打,你需要将它们转换为浮点数。有两种方法可以做到这一点。
您可以将作业分成两行:
time.TotalGameTime.TotalSeconds = InitialTime;
float t = (float)time.TotalGameTime.TotalSeconds;
或者,如果您坚持在一行中执行此操作,请使用括号对您的操作进行分组:
float t = (float)(time.TotalGameTime.TotalSeconds = InitialTime);
编辑:
话又说回来,我一直假设双重分配是故意的。您可能打算做的是从 TotalTime
中减去 InitialTime
以获得当前时间戳。在那种情况下,这只是一个拼写错误的简单修复:
float t = (float)(time.TotalGameTime.TotalSeconds - InitialTime);
(请注意,如果 TotalSeconds
和 InitialTime
是双精度数,您将需要使用括号将运算转换为浮点数,就像我所做的那样。)