2 registered members (OptimusPrime, AndrewAMD),
14,580
guests, and 5
spiders. |
Key:
Admin,
Global Mod,
Mod
|
|
|
Re: camera problem
[Re: Progger]
#323840
05/17/10 19:02
05/17/10 19:02
|
Joined: Dec 2008
Posts: 605 47°19'02.40" N 8°32'54.67"...
hopfel
User
|
User
Joined: Dec 2008
Posts: 605
47°19'02.40" N 8°32'54.67"...
|
Und ich würde dir noch empfehlen, diesen Code hier zu benutzen: über der while-schleife:
ENTITY* dummy = ent_create(NULL,nullvector,NULL); //erstelle einen Dummy, welcher
//später als Orientierungspunkt der Kamera dient
und in der while-schleife:
vec_set(dummy.x,vector(my.x,my.y,my.z+150)); //setze den Dummy auf die Entity
camera.x=dummy.x-(50)*cos(dummy.tilt)*cos(dummy.pan);
camera.y=dummy.y-(50)*cos(dummy.tilt)*sin(dummy.pan);
camera.z=dummy.z-(50)*sin(dummy.tilt); //rotiere die Kamera um den Dummy
//(50 ist hier der Abstand)
vec_set(camera.pan,dummy.pan); //rotiere die Kamera
Das deckt nämlich auch noch die Eventualität ab, dass du die Kamera gen oben bzw. unten neigen willst. Wenn du jetzt die Kamera neigen willst, musst du nur die Winkel von "dummy" ändern. Z.B. so:
dummy.pan = my.pan; //camera dreht sich mit my mit
dummy.tilt += (key_q-key_a)*3*time_step; //neige die Kamera
//beim Drücken der Tasten 'q' oder 'a'
Hilf mir, dir zu helfen!
|
|
|
Re: camera problem
[Re: Progger]
#323876
05/17/10 23:05
05/17/10 23:05
|
Joined: Nov 2008
Posts: 46
DrBong
OP
Newbie
|
OP
Newbie
Joined: Nov 2008
Posts: 46
|
hab den fehler behoben, irgendwie gabs probleme mit dem pointer "player" habe :
camera.x = my.x - 250 * cos(player.pan); // 250 = distance zwischen camera und spieler
camera.y = my.y - 250 * sin(player.pan); //
durch:
camera.x = my.x - 250 * cos(my.pan); // 250 = distance zwischen camera und spieler
camera.y = my.y - 250 * sin(my.pan); //
ersetzt und jetzt funktioniert alles so wie es soll =)
|
|
|
Re: camera problem
[Re: DrBong]
#323970
05/18/10 18:56
05/18/10 18:56
|
Joined: Jun 2008
Posts: 146 Deutschland
M4sterm1nd
Member
|
Member
Joined: Jun 2008
Posts: 146
Deutschland
|
*mit der Hand an den Kopf fass* Ja natürlich sorry hab ich schnell meinen code reinkopiert und vergessen den pointer umzuschreiben. XD Top das du den fehler selbst gefunden hast und schön das ich dir helfen konnte 
|
|
|
Re: camera problem
[Re: M4sterm1nd]
#324263
05/20/10 01:46
05/20/10 01:46
|
Joined: Nov 2008
Posts: 46
DrBong
OP
Newbie
|
OP
Newbie
Joined: Nov 2008
Posts: 46
|
ihr habt mir schon sehr geholfen aber es gibt immer wieder probleme wo ich net weiter komme  wie krieg ich eine Kollisionserkennung bei der camera hin ? ich will das egal wie man sie dreht, die nicht unter dem boden oder in einer wand verschwindet. ich hab im lite-c workshop und handbuch rumgeblätert aber nix gefunden, wär schön wen jemand mit einem passenden code helfen könnte mein code:
action pl_srg()
{
char1 = my;
ENTITY* dummy = ent_create(NULL,nullvector,NULL); //erstelle einen Dummy
while (1)
{
c_move(char1, vector(0, 0, -100 * time_step), nullvector, 0);
c_move(char1, nullvector, vector(0, 0, -2 * time_step), GLIDE);
if (key_w)
{
c_move(char1, vector(15 * time_step, 0, 0), nullvector, GLIDE);
char1.pan = dummy.pan;
char1.skill1 = char1.skill1 + 7.5 * time_step;
if (char1.skill1 > 100)
{
char1.skill1 -= 100;
}
ent_animate(char1, "walk", char1.skill1, ANM_CYCLE);
}
else
{
char1.skill1 = char1.skill1 + 0.7 * time_step;
if (char1.skill1 > 100)
{
char1.skill1 -= 100;
}
ent_animate(char1, "stand", char1.skill1, ANM_CYCLE);
}
if (key_s)
{
c_move(char1, vector(-10 * time_step, 0, 0), nullvector, GLIDE);
char1.pan = dummy.pan;
char1.skill1 = char1.skill1 - 5 * time_step;
if (char1.skill1 > 100)
{
char1.skill1 -= 100;
}
ent_animate(char1, "walk", char1.skill1, ANM_CYCLE);
}
if (key_a)
{
dummy.pan = dummy.pan + 5 * time_step;
}
if (key_d)
{
dummy.pan = dummy.pan - 5 * time_step;
}
if (key_cuu)
{
if (dummy.tilt > -90)
{
dummy.tilt = dummy.tilt - 5 * time_step;
}
}
if (key_cud)
{
if (dummy.tilt < 0)
{
dummy.tilt = dummy.tilt + 5 * time_step;
}
}
if (key_cul)
{
dummy.pan = dummy.pan + 5 * time_step;
}
if (key_cur)
{
dummy.pan = dummy.pan - 5 * time_step;
}
if (key_pgup)
{
if (cam_pos > 50)
{
cam_pos = cam_pos - 5 * time_step;
}
}
if (key_pgdn)
{
if (cam_pos < 300)
{
cam_pos = cam_pos + 5 * time_step;
}
}
vec_set(dummy.x, vector(char1.x, char1.y, char1.z + 20)); //setze den Dummy auf die Entity
camera.x = dummy.x - (cam_pos) * cos(dummy.tilt) * cos(dummy.pan);
camera.y = dummy.y - (cam_pos) * cos(dummy.tilt) * sin(dummy.pan);
camera.z = dummy.z - (cam_pos) * sin(dummy.tilt); //rotiere die Kamera um den Dummy
vec_set(camera.pan, dummy.pan); //rotiere die Kamera
vec_set(camera.tilt, dummy.tilt);
////////////////////////Maus///////////////////////////////////////////////////
if (mouse_right)
{
dummy.tilt += mouse_force.y * mouse_speed * time_step;
dummy.tilt = clamp(dummy.tilt, -90, 0);
dummy.pan -= mouse_force.x * mouse_speed * time_step;
}
mouse_pos.x = mouse_cursor.x;
mouse_pos.y = mouse_cursor.y;
if (mouse_middle)
{
if (cam_pos > 50)
{
cam_pos = cam_pos - 5 * time_step;
}
}
///////////////////////////////////////////////////////////////////////////////
wait(1);
}
}
Last edited by DrBong; 05/22/10 05:44.
|
|
|
|