Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!
Werbeanzeige
C#-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 |
void team_embark_IN(Squad_Manager sqm, VehikelIdentyfier vI) { //maximale fahrgastzahl beachten! TODO if (sqm.TeamMitglieder.Count == 0 )//|| vI.maxPersonen ==1) return; if (vI.maxPersonen == 1) { txt_2.GetComponent<InfotextScript>().DisplayInfo("nur für eine Person!", 2.5f); foreach (GameObject g in sqm.TeamMitglieder) // läßt die Teammitglieder stehen { g.GetComponent<AI>().SetStandBy(); g.GetComponent<AI>().GotOrderToPatrol = false; Radar.RemoveRadarObjekt(g); Radar.RegisterRadarObjekte(g, radar.Radarmarker[1]); } // wenn sie dem 1-Mann Vehikel folgen sollen, dann muß hier noch was hin. return; } if (vI.maxPersonen-1 >= sqm.TeamMitglieder.Count) // alle haben Platz { foreach (GameObject g in sqm.TeamMitglieder) { vI.Insasse.Add(g.GetComponent<CharacterStats>()); Radar.RemoveRadarObjekt(g); g.SetActive(false); } return; } else if (vI.maxPersonen-1 < sqm.TeamMitglieder.Count) { // Debug.Log("es haben nicht alle in diesem Fahrzeug Platz!"); txt_2.GetComponent<InfotextScript>().DisplayInfo("es haben nicht alle in diesem Fahrzeug Platz!", 2.5f); for (int i = vI.Insasse.Count; i < vI.maxPersonen;i++) { vI.Insasse.Add(sqm.TeamMitglieder[i].GetComponent<CharacterStats>()); Radar.RemoveRadarObjekt(sqm.TeamMitglieder[i]); sqm.TeamMitglieder[i].SetActive(false); } foreach (GameObject g in sqm.TeamMitglieder) { if (!vI.Insasse.Contains(g.GetComponent<CharacterStats>())) { g.GetComponent<AI>().SetStandBy(); g.GetComponent<AI>().GotOrderToPatrol = false; Radar.RemoveRadarObjekt(g); Radar.RegisterRadarObjekte(g, radar.Radarmarker[1]); } } return; } } void team_embark_OUT(VehikelIdentyfier vI, Squad_Manager sqm) { if (vI.Insasse.Count == 0) //wenn also außer dem Fahrer niemand an Bord war return; sqm.memberPositionieren(sqm.TeamMitglieder.Count); for (int i = 0; i < sqm.TeamMitglieder.Count; i++) { sqm.TeamMitglieder[i].gameObject.transform.position = sqm.memberPos[i]; } foreach (GameObject g in sqm.TeamMitglieder) { g.SetActive(true); Radar.RegisterRadarObjekte(g, radar.Radarmarker[2]); } vI.Insasse.Clear(); } |
Es freut mich, wenn euch mein Vehikel "gefällt"
...jedenfalls: kann man nun seit heute auch:
-Teammitglieder im Auto mitnehmen (abhängig davon, wieviel Sitzplätze das Fahrzeug hat), und sie spawnen um den Player herum, wenn dieser wieder aussteigt.
Und hier hab ich mal ne Frage zum programmieren. Dieses "Teammitglieder mitnehmen", hab ich wie folgt gelöst.
Und jetzt mal ne ganz doofe Frage: ich hab nie programmieren gelernt, aber ich hab das Gefühl, ich schreibe viel Spaghetti-Code.
Kann man an unten stehendem Beispiel etwas performanter/eleganter/kürzer schreiben?
(in den englischsprachigen tutorials auf YouTube heißts immer "slick" "neat" usw.)
Der Code funzt zwar, aber..hmmm... so for-Schleifen, if-Abfragen etc. kann man doch hin und wieder durch so Hieroglyphen wie "?:" komplett abkürzen?
(Wie gesagt, das ist nur ein Beispiel, ich möcht ja noch was lernen )
C#-Quelltext
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 void team_embark_OUT(VehikelIdentyfier vI, Squad_Manager sqm) { if (vI.Insasse.Count == 0) //wenn also außer dem Fahrer niemand an Bord war return; sqm.memberPositionieren(sqm.TeamMitglieder.Count); for (int i = 0; i < sqm.TeamMitglieder.Count; i++) { sqm.TeamMitglieder[i].gameObject.transform.position = sqm.memberPos[i]; } foreach (GameObject g in sqm.TeamMitglieder) { g.SetActive(true); Radar.RegisterRadarObjekte(g, radar.Radarmarker[2]); } vI.Insasse.Clear(); }
C#-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
void team_embark_OUT(VehikelIdentyfier vI, Squad_Manager sqm) { if (vI.Insasse.Count == 0) //wenn also außer dem Fahrer niemand an Bord war return; sqm.memberPositionieren(sqm.TeamMitglieder.Count); for (int i = 0; i < sqm.TeamMitglieder.Count; i++) { GameObject mitglied = sqm.TeamMitglieder[i].gameObject; mitglied.transform.position = sqm.memberPos[i]; mitglied.SetActive(true); Radar.RegisterRadarObjekte(mitglied, radar.Radarmarker[2]); } vI.Insasse.Clear(); } |
C#-Quelltext |
|
1 2 3 4 5 6 7 8 |
// Anstatt: g.GetComponent<AI>().SetStandBy(); g.GetComponent<AI>().GotOrderToPatrol = false; // So: AI ai = g.GetComponent<AI>(); ai.SetStandBy(); ai.GotOtderToPatrol = false; |
Administrator
C#-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 |
void Start() { cM = GetComponent<CharacterMovement>(); itM = GetComponent<ItemManager>(); wH = GetComponent<WeaponHandler>(); n_AV = GetComponent<Animator>().avatar; if (Body_second != null) { s_AV = Body_second.GetComponent<Animator>().avatar; Body_second.SetActive(false); } } void detach_wH(Transform lHand, Transform rHand, Transform Spine) { wH.userSettings.leftHand = lHand; wH.userSettings.rightHand = rHand; wH.userSettings.pistolUnequipSpot = Spine; wH.userSettings.rifleUnequipSpot = Spine; wH.userSettings.leftHandIKTarget = lHand; wH.userSettings.spine = Spine; wH.currentWeapon.transform.SetParent(rHand); } void detach_cM(Transform Head) { cM.other_Setup.Kopf = Head; } void detach_itM(Transform r_Hand, Transform l_Hand, Transform Head, Transform Spine, Transform r_leg, Transform l_leg) { itM.userSettings.Kopf = Head; itM.userSettings.rechte_Hand = r_Hand; itM.userSettings.linke_Hand = l_Hand; itM.userSettings.Spine = Spine; itM.userSettings.USL = l_leg; itM.userSettings.USR = r_leg; } public void _change_body(int i) { if (Body_second == null) return; if (i == 1 && _current_body ==0) { Body_normal.SetActive(false); Body_second.SetActive(true); if (Body_second.GetComponent<Animator>()) { Destroy(Body_second.GetComponent<Animator>()); } GetComponent<Animator>().avatar = s_AV; detach_wH(s_left_Hand, s_right_Hand, s_Spine); detach_itM(s_right_Hand, s_left_Hand, s_Head, s_Spine, s_r_leg, s_l_leg); detach_cM(s_Head); _current_body = 1; } else if (i == 0 && _current_body==1) { GetComponent<Animator>().avatar = n_AV; Body_normal.SetActive(true); Body_second.SetActive(false); detach_wH(n_left_Hand, n_right_Hand, n_Spine); detach_itM(n_right_Hand, n_left_Hand, n_Head, n_Spine, n_r_leg, n_l_leg); detach_cM(n_Head); _current_body = 0; } } |
Ich hoffe sehr, das wenigstes 1-2 Leute m,al Interesse haben, das auch zu spielen...
Werbeanzeige