Siebenkeim Member
Anmeldedatum: 09.04.2012 Beiträge: 32
|
Verfasst am: 27.04.2012, 21:54 Titel: Gitter Problem |
|
Hallo,
habe mal wieder ein Problem
Ich wollte ein Gitter erstellen und wenn ich mit der Maus auf ein "Rechteck" komme soll sich dort ein Sprite erstellen.
Schreibe immer erst einen Code zum Testen sozusagen die Basis, das Problem ist das es bei mir garnicht oder erst sehr spät reagiert woran könnte es liegen?
Bin recht neu in XNA:
| Code: |
public class Grid
{
bool ifClicked = false;
int tempRect = 0;
private int screenWidthTile = 1020 / 40;
private int screenHeightTile = 680 / 40;
int mouseX;
int mouseY;
List<Rectangle> screenRect = new List<Rectangle>();
public void LoadGrid()
{
int[,] screenArray = new int[screenHeightTile, screenWidthTile];
for (int i = 0; i < screenHeightTile; i++)
{
for (int j = 0; j < screenWidthTile; j++)
{
screenArray[i, j] = 0;
screenRect.Add(new Rectangle(j * 40, 0, 40, 40));
}
}
}
public void UpdateGrid()
{
mouseX = Mouse.GetState().X;
mouseY = Mouse.GetState().Y;
Rectangle mouseRect = new Rectangle(mouseX, mouseY, 3, 3);
if (mouseRect.Intersects(screenRect[0]))
{
ifClicked = true;
}
}
public void DrawGrid(SpriteBatch batch, Texture2D test)
{
if (ifClicked)
{
batch.Draw(test, screenRect[0], Color.White);
}
}
}
|
Alles erstmal nur zum Testen ist auch noch unvollständig.
Ich danke schonmal für eure Hilfe.
EDIT: Das XNA Fenster befindet sich in einer WinForms habe gedacht liegt an denn Coords aber 0,0 ist genau dort wo es sein muss; |
|
| Nach oben |
|

|
Eltarion Member
Anmeldedatum: 25.12.2011 Beiträge: 15
|
Verfasst am: 28.04.2012, 00:36 Titel: |
|
-Wenn ich das richtig sehe, prüfst und zeichnest du immer nur das erste Element (Rechteck). Ist das so geplannt?
-Bekommst du Fehlermeldungen oder zeichnet er es einfach nicht?
-Ist test auch die richtige Texture.
| Code: | public void LoadGrid()
{
int[,] screenArray = new int[screenHeightTile, screenWidthTile];
for (int i = 0; i < screenHeightTile; i++)
{
for (int j = 0; j < screenWidthTile; j++)
{
screenArray[i, j] = 0;
screenRect.Add(new Rectangle(j * 40, 0, 40, 40));
}
}
} |
-Ist es geplant, dass du i (y-coord) nicht mit in die Rechtecke einbeziehst?
macht doch keinen sinn x mal die gleichen Rechtsecke zu erstellen.
-Schonmal durchgestept (debug+breakpoint)?
Es kann sein das ich einfach nur zu müde bin, aber mir fehlen da ein paar Informationen.
Sorry wenn ich mist rede, wollte nur Erste-Hilfe geben  |
|
| Nach oben |
|

|
Siebenkeim Member
Anmeldedatum: 09.04.2012 Beiträge: 32
|
Verfasst am: 28.04.2012, 10:12 Titel: |
|
| Zitat: |
-Wenn ich das richtig sehe, prüfst und zeichnest du immer nur das erste Element (Rechteck). Ist das so geplannt?
|
Ja ist so geplant will einfach erstmal nur kugen ob es funktioniert aber wie schon gesagt er reagiert garnicht oder erst sehr spät
| Zitat: |
-Bekommst du Fehlermeldungen oder zeichnet er es einfach nicht?
|
Er zeichnet es einfach nicht oder viel zu spät 10-15sec
| Zitat: |
-Ist test auch die richtige Texture.
|
Test ist eine richtige Texture habe sie auch nur einfach mal gezeichnet um zu testen ob sie auch funktioniert
| Zitat: |
-Ist es geplant, dass du i (y-coord) nicht mit in die Rechtecke einbeziehst?
macht doch keinen sinn x mal die gleichen Rechtsecke zu erstellen.
|
i brauche ich erstmal nicht wenn ich es mit einbeziehen würde, würde er er es schräg runter zeichnen bzw. die Rectangles schräg erstellen
Die Rechtecke sind für das Gitter gut wenn ich ein großes Rechteck hätte würde ich ja einfach nur ein Gitterstück haben will aber mehrere und durch die Rechtecke kann ich mit Intersects
bei jedem nachkugen ob die Maus sie berührt bzw. anklickt. |
|
| Nach oben |
|

|
Siebenkeim Member
Anmeldedatum: 09.04.2012 Beiträge: 32
|
Verfasst am: 28.04.2012, 10:26 Titel: |
|
Ok habe nun herausgefunden woran es liegt.
Habe mir mit DrawString einfach mal die MausCoords anzeigen lassen und sehe das die Koordinaten durch die WinForm vollkommen anders sind.
Wie kriege ich hin das er nur die Koordinaten von dem XNA FEnster abliest? |
|
| Nach oben |
|

|
simsmaster Member
Anmeldedatum: 05.08.2009 Beiträge: 1631 Wohnort: Langenhagen
|
Verfasst am: 28.04.2012, 15:41 Titel: |
|
Wenn ich mich richtig erinnere musste man Mouse.Handle auf das Handle der Oberfläche setzen, auf die du zeichnest. _________________ Mein Blog - XNA FAQ |
|
| Nach oben |
|

|
Siebenkeim Member
Anmeldedatum: 09.04.2012 Beiträge: 32
|
Verfasst am: 28.04.2012, 16:41 Titel: |
|
Danke dir simsmaster es hat funktioniert
EDIT: Ok es ist ein neues Problem aufgetaucht wollte dafür nicht extra einen neuen Thread eröffnen.
Aus irgendeinem Grund werden bei mir alle Objekte mit spriteBatch in der Größe 51x56 gezeichnet anstatt wie ich sie halt gezeichnet habe in 40x40
Woran kann das liegen? |
|
| Nach oben |
|

|
Siebenkeim Member
Anmeldedatum: 09.04.2012 Beiträge: 32
|
Verfasst am: 29.04.2012, 14:59 Titel: |
|
Habe nun herausgefunden woran es liegt.
Mein Xna Fenster wird in einer pictureBox erstellt wird und wenn ich die Größe davon ändere werden die Bilder kleiner bzw. größer.
Wie kann ich das beheben? Das die bildern dennoch normal gezeichnet werden?
Habe jetzt 1020x 680 und wenn ich es kleiner stelle werden auch die Bilder kleiner will aber das sie auf die Größe nicht achten. |
|
| Nach oben |
|

|
simsmaster Member
Anmeldedatum: 05.08.2009 Beiträge: 1631 Wohnort: Langenhagen
|
|
| Nach oben |
|

|
Siebenkeim Member
Anmeldedatum: 09.04.2012 Beiträge: 32
|
Verfasst am: 29.04.2012, 17:39 Titel: |
|
Danke hat wiedermal funktioniert ich wusste wie man das einstellt bloß ich bin halt einfach nicht drauf gekommen
Werde mir aufjedenfall diese Dinge merken wenn ich einen Level Editor mache^^ |
|
| Nach oben |
|

|
|