6 registered members (AndrewAMD, Ayumi, degenerate_762, 7th_zorro, VoroneTZ, HoopyDerFrood),
1,268
guests, and 6
spiders. |
Key:
Admin,
Global Mod,
Mod
|
|
|
Camera problem
#317258
03/30/10 11:14
03/30/10 11:14
|
Joined: Apr 2006
Posts: 273 Germany, NRW
Meerkat
OP
Member
|
OP
Member
Joined: Apr 2006
Posts: 273
Germany, NRW
|
Hi ho, aktuell arbeit ich an einem kleinen Test für ein Multiplayergame (da mir kein vernünftiges Projekt derzeit eingefallen ist und MP mich einfach interessiert). Dort habe ich folgendes Problem: Ich starte einen Server/Client und meine Kamera die der Kingdom Hearts Kamera nachempfunden ist funktioniert auch wunderbar soweit. Sie richtet sich nach dem Spieler aus, und fliegt an ihn bis auf eine bestimmte Entfernung heran. Mit den mouse_force Axen kann ich dann die Kamera um den Spieler herum drehen was auch wunderbar funktioniert. Die Server/Client Figur ist ROT! Sobald ich aber als 2. Spieler mit einer BLAUEN Figur joine, vertauschen sich beide Kameras was aber nicht Sinn und Zweck der Geschichte war. Das heißt im Klartext das meine Serverkamera auf der BLAUEN Figur hängt und ich aber trotzdem die ROTE Figur bewege. Für eine Hilfestellung währ ich sehr dankbar! Ich poste den Code der Kamera da ich denke das von da her das Problem rührt. Ahso, bevor ich es vergesse. Der CameraCode ist rein Clientseitig geschrieben! MfG: Meerkat
void Camera_Player()
{
Playercam = my;
vec_set(my.x, camera.x); //Setze CamEntity auf Camera Position!
while(1)
{
vec_set(camera.x, my.x); //Setze CamEntity auf Camera Position!
var temp_vec[3];
vec_set(temp_vec, player.x);
vec_sub(temp_vec, camera.x);
vec_to_angle(camera.pan, temp_vec); //Drehe Kamera richtung Spieler Figur!
my.pan = camera.pan;
var Cam_Entfernung;
Cam_Entfernung = vec_dist(camera.x, player.x);
if(Cam_Entfernung > 150)
{
c_move(my, vector(10*time_step,0,0), nullvector, GLIDE);
}
if(Cam_Entfernung < 140)
{
c_move(my, vector(-10*time_step,0,0), nullvector, GLIDE);
}
c_move(my, vector(0,mouse_force.x,mouse_force.y), nullvector, GLIDE);
wait(1);
}
}
action Player()
{
player = my;
player_action();
Playercam = ent_createlocal("camera_dummy.mdl", vector(0,0,0), Camera_Player);
}
http://www.gpi-studios.comOS: Windows 7 Home Premium (64 Bit Version) AMD Athlon 64 X2 Dual Core Processor 5200+ 6gb DDR 2 - RAM NVIDIA GeForce GTX 460 GameStudio Version A8 Commercial
|
|
|
Re: Camera problem
[Re: Razoron]
#317275
03/30/10 12:24
03/30/10 12:24
|
Joined: Apr 2006
Posts: 273 Germany, NRW
Meerkat
OP
Member
|
OP
Member
Joined: Apr 2006
Posts: 273
Germany, NRW
|
Hrm ok, danke dir. Ich werd ma schauen wie ich das löse. ^^
Edit: Also ich habe nun eine Abfrage reingehauen das die Camera Funktion nur von dem Client gestartet werden kann. Trotzdem tritt das Problem dann auf wenn ein Client joint. Mir gehen langsam die Ideen aus. ^^
Last edited by Meerkat; 03/30/10 13:51.
http://www.gpi-studios.comOS: Windows 7 Home Premium (64 Bit Version) AMD Athlon 64 X2 Dual Core Processor 5200+ 6gb DDR 2 - RAM NVIDIA GeForce GTX 460 GameStudio Version A8 Commercial
|
|
|
Re: Camera problem
[Re: SchokoKeks]
#317336
03/30/10 16:33
03/30/10 16:33
|
Joined: Apr 2006
Posts: 273 Germany, NRW
Meerkat
OP
Member
|
OP
Member
Joined: Apr 2006
Posts: 273
Germany, NRW
|
Ich habe eine Abfrage reingebaut die dafür sorgt das der den Pointer nur 1x vergibt. Dennoch liegt das alte Problem vor. Edit: Ich versuch das Problem grad anders zu lösen. Anstatt eine extra funktion mit dem player pointer zu nutzen schreib ich das anders in die Client/Server Funktion. Nun scheint zumindest zu funktionieren. Dummerweise hab ich nur keine Rotation mehr für die Kamera da ich mich mit der Trigonometrie nicht auskenne (und das nie gelernt habe). Edit 2: Hier hab ich den funktionierenden Code endlich und will ihn euch nicht vorenthalten.
if(my.client_id == dplay_id) //Dieser Code läuft NUR auf dem CLIENT!
{
var temp_vec[3];
var CamEntfernung = 180;
camera.pan -= mouse_force.x * 24 * time_step;
camera.tilt += mouse_force.y * 16 * time_step;
camera.tilt = clamp(camera.tilt, -20, 20);
temp_vec = fcos(camera.tilt, 0);
vec_set(camera.x, vector(my.x + fcos(camera.pan, -CamEntfernung),my.y + fsin(camera.pan, -CamEntfernung),(my.z + 40) - fsin(camera.tilt, 80)));
}
Last edited by Meerkat; 03/30/10 18:23.
http://www.gpi-studios.comOS: Windows 7 Home Premium (64 Bit Version) AMD Athlon 64 X2 Dual Core Processor 5200+ 6gb DDR 2 - RAM NVIDIA GeForce GTX 460 GameStudio Version A8 Commercial
|
|
|
|