我目前正在使用XNA和VS2010的2D彈球遊戲,並且遇到問題。XNA中的System.Drawing
首先,我有兩個槳,每個都有一個邊界框。據我所知,除非使用繪製方法,否則不可能旋轉矩形。雖然這種類型的旋轉不起作用,因爲Rectangle尺寸實際上沒有移動,它只是被繪製來實現。
然後,我轉向使用線條,並試圖實現System.Drawing爲了使用鋼筆工具,我發現命名空間不存在。
對此提出建議?
我目前正在使用XNA和VS2010的2D彈球遊戲,並且遇到問題。XNA中的System.Drawing
首先,我有兩個槳,每個都有一個邊界框。據我所知,除非使用繪製方法,否則不可能旋轉矩形。雖然這種類型的旋轉不起作用,因爲Rectangle尺寸實際上沒有移動,它只是被繪製來實現。
然後,我轉向使用線條,並試圖實現System.Drawing爲了使用鋼筆工具,我發現命名空間不存在。
對此提出建議?
這聽起來像你混淆了實際的遊戲槳/矩形元素和他們的圖像繪製到屏幕上。
擔心您的遊戲如何玩,槳,球等如何移動和旋轉,然後繪製圖像以相應匹配。
另外,如果您遇到問題,請考慮發佈代碼。
我的代碼到目前爲止 @Nick 'public void RotL(float gametime){ rotAngle + =(gametime * speed); rotAngle = rotAngle%CIRCLE_IN_DEGREES; rads = rotAngle *(Math.PI/180);如果(rotAngle <= MAX_ROT) rotAngle = MAX_ROT; 速度= 1.0F; Endpoint.X =(float)(PADDLE_WID * Math.Cos(MAX_RADS)); Endpoint.Y =(float)(PADDLE_WID * Math。SIN(MAX_RADS)); } 否則如果(rotAngle> = INIT_ROT),反映了前面的if語句,與INIT_RADS } 別的替換MAX_RADS { 數據操縱 { 速度+ = 0.45F; Endpoint.X =(float)(PADDLE_WID * Math.Cos(rads)); Endpoint.Y =(float)(PADDLE_WID * Math.Sin(rads)); }' – user2344574 2013-05-02 22:30:26
我也似乎無法以正確的方式發佈此代碼 – user2344574 2013-05-02 22:32:21
@ user2344574編輯上面的問題。用「編輯:」開始,然後用代碼格式發佈你的代碼。 – 2013-05-03 12:52:22
對不起,不是真正的答案,而是編輯。我還沒有enuf點來編輯你的問題,但包裝代碼是驅動我的越野車。縮進至少4個空格,讓它自動識別爲代碼。另外,你似乎錯過了它的一部分。
public void RotL(float gametime)
{
rotAngle += (gametime * speed);
rotAngle = rotAngle % CIRCLE_IN_DEGREES;
rads = rotAngle * (Math.PI/180);
if (rotAngle <= MAX_ROT)
{
rotAngle = MAX_ROT;
speed = 1.0F;
Endpoint.X = (float)(PADDLE_WID * Math.Cos(MAX_RADS));
Endpoint.Y = (float)(PADDLE_WID * Math.Sin(MAX_RADS));
}
else if (rotAngle >= INIT_ROT)
{
data manipulation that mirrors the previous if clause, replacing MAX_RADS with INIT_RADS
}
else
{
speed += 0.45F;
Endpoint.X = (float)(PADDLE_WID * Math.Cos(rads));
Endpoint.Y = (float)(PADDLE_WID * Math.Sin(rads));
}
歡迎來到StackOverflow。你應該發佈一些代碼,告訴我們你到目前爲止所嘗試過的。 – 2013-05-02 21:02:01
@Nick 在槳板類中,我有單獨的功能來旋轉左/右槳葉。 – user2344574 2013-05-02 21:56:48
@Nick 'public void RotL(float gametime){ rotAngle + =(gametime * speed); rotAngle = rotAngle%CIRCLE_IN_DEGREES; rads = rotAngle *(Math.PI/180);如果(rotAngle <= MAX_ROTATION) rotAngle = MAX_ROTATION; 速度= 1.0F; Endpoint.X =(float)(PADDLE_WID * Math.Cos(MAX_RADS)); Endpoint.Y =(float)(PADDLE_WID * Math.Sin(MAX_RADS)); } 否則如果(rotAngle> = INIT_ROT),反映了前面的if語句,與INIT_RADS } 別的替換MAX_RADS { 數據操縱 { 速度+ = 0.45F; Endpoint.X =(float)(PADDLE_WID * Math.Cos(rads)); Endpoint.Y =(float)(PADDLE_WID * Math.Sin(rads)); }' – user2344574 2013-05-02 22:28:20