2013-05-02 42 views
-1

我目前正在使用XNA和VS2010的2D彈球遊戲,並且遇到問題。XNA中的System.Drawing

首先,我有兩個槳,每個都有一個邊界框。據我所知,除非使用繪製方法,否則不可能旋轉矩形。雖然這種類型的旋轉不起作用,因爲Rectangle尺寸實際上沒有移動,它只是被繪製來實現。

然後,我轉向使用線條,並試圖實現System.Drawing爲了使用鋼筆工具,我發現命名空間不存在。

對此提出建議?

+0

歡迎來到StackOverflow。你應該發佈一些代碼,告訴我們你到目前爲止所嘗試過的。 – 2013-05-02 21:02:01

+0

@Nick 在槳板類中,我有單獨的功能來旋轉左/右槳葉。 – user2344574 2013-05-02 21:56:48

+0

@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

回答

1

這聽起來像你混淆了實際的遊戲槳/矩形元素和他們的圖像繪製到屏幕上。

擔心您的遊戲如何玩,槳,球等如何移動和旋轉,然後繪製圖像以相應匹配。

另外,如果您遇到問題,請考慮發佈代碼。

+0

我的代碼到目前爲止 @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

+0

我也似乎無法以正確的方式發佈此代碼 – user2344574 2013-05-02 22:32:21

+0

@ user2344574編輯上面的問題。用「編輯:」開始,然後用代碼格式發佈你的代碼。 – 2013-05-03 12:52:22

1

對不起,不是真正的答案,而是編輯。我還沒有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)); 
     }