2016-10-03 67 views
-1

我正在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」線,它涉及了下面的錯誤,

錯誤CS0131賦值的左手側必須是一個變量, 屬性或索引

+0

你是說在那一行有兩個'='符號嗎? – Abion47

+0

是的,但我仍然不確定爲什麼我有一個錯誤。我觀看過關於這個視頻的視頻以及這一切的結局,我的.png圖像本來就是對角線下降的。 – neamus

+0

您正在嘗試更改'GameTime'中的某個值,您可能不應該這樣做。錯誤的原因是因爲「浮動」投射。您正在有效地將'TotalSeconds'設置爲'InitialTime',然後設置't'。爲什麼? – TyCobb

回答

1

你的問題,是因爲這樣的:

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雙打,你需要使用括號投操作的浮動,因爲我已經做了。 )

+0

非常感謝您給予的幫助:) – neamus