使对象移动 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;

这不仅语法无效,而且毫无意义。

我想你进行转换的原因是因为 TotalSecondsInitialTime 是双打,你需要将它们转换为浮点数。有两种方法可以做到这一点。

您可以将作业分成两行:

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);

(请注意,如果 TotalSecondsInitialTime 是双精度数,您将需要使用括号将运算转换为浮点数,就像我所做的那样。)