我似乎有一个可以按情况工作的赋值运算符。我有一个 Vector2 类,它包含两个浮点数,x 和 y。这是 operator= 方法:
Vector2 Vector2::operator=(const Vector2 &right)
{
Vector2 result;
result.x = right.x;
result.y = right.y;
return result;
}
在我拥有的实体的 onMove 方法中:
Vector2 newPosition = position + (speed * getSpeedFactor());
if (posValid(newPosition))
{
position.x = newPosition.x;
position.y = newPosition.y;
//position = newPosition;
}
其中 speedFactor 取决于帧率,而 posValid 是检查一个点是否在墙上或其他东西中。位置和速度也是 Vector2 的。第一个任务:
Vector2 newPosition = position + (speed * getSpeedFactor());
工作,并且使用代码,我得到了预期/预期的行为,但是
position = newPosition;
无论是单独使用还是在 .x 和 .y 分配之前或之后,都没有效果。