- mausempf := 7; //Mausempfindlichkeit
- getcursorpos(p); // Aktuelle Mausposition in p schreiben. P besteht aus p.x und p.y für die Mauskoordinaten
- br := Form1.width div 2;
- hö := Form1.Height div 2;
- //yrot ist die links-rechts Bewegung der Kamera beim Egoshooter.
- //xrot die rauf-Runter-Sicht.
- //Hier wird geschaut in welche Richtung sich die Maus seit dem letzten Frame bewegt hat. OldMPos ist dabei die Position des vorigen Frame.
- //Die entsprechende Bewegung wird direkt übernommen.
- if OldMPos.X < p.X then
- yrot := yrot + Abs(OldMPos.X - p.X) / mausempf;
- if OldMPos.X > p.X then
- yrot := yrot - Abs(OldMPos.X - p.X) / mausempf;
- if (OldMPos.Y > p.Y) then
- xrot := xrot - Abs(OldMPos.Y - p.Y) / mausempf;
- if (OldMPos.Y < p.Y) then
- xrot := xrot + Abs(OldMPos.Y - p.Y) / mausempf;
- getcursorpos(OldMPos);
- // Maus im Mittelbereich vom Bildschirm halten. Wenn sie über einen gewissen Bereich raushüpft wird sie wieder auf 0 gesetzt.
- if p.X < br - 99 then
- begin
- SetCursorPos(br + 99, p.Y);
- OldMPos.X := br + 100;
- end
- else if p.X >= br + 99 then
- begin
- SetCursorPos(br - 99, p.Y);
- OldMPos.X := OldMPos.X - 200;
- end
- else if p.Y < hö - 100 then
- begin
- SetCursorPos(p.X, hö + 99);
- OldMPos.Y := OldMPos.Y + 200;
- end
- else if p.Y >= hö + 100 then
- begin
- SetCursorPos(p.X, hö - 99);
- OldMPos.Y := OldMPos.Y - 200;
- end;
- // Beschränkungen beim Rauf-Runter-Schaun. Der Spieler kann seinen Kopf ja nicht nach oben drehen bis das Genick bricht.
- if xrot > 80 then
- xrot := 80;
- if xrot < -80 then
- xrot := -80;