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 81 |
private Vector3 bewegungsInputs = new Vector3(Input.GetAxis("Horizontal"), 0, Input.GetAxis("Vertical")); public float sprungGeschwindigkeit = 10F; public float schwerkraft = 20.0F; public float bewegungsGeschwindigkeit = 10.0F; public float rotationsGeschwindigkeit = 8.0F; public GameObject richtungsObjekt; private CharacterController charController; private bool kannDoppeltSpringen = false; private void Start() { charController = GetComponent<CharacterController>(); } private void Update() { if (Input.GetKey(KeyCode.A)) { Bewegen(Vector3.left); } if (Input.GetKey(KeyCode.D)) { Bewegen(Vector3.right); } if (Input.GetKey(KeyCode.W)) { Bewegen(Vector3.forward); } if (Input.GetKey(KeyCode.S)) { Bewegen(Vector3.back); } if (charController.isGrounded) { if (Input.GetButton("Jump")) { bewegungsInputs.y = sprungGeschwindigkeit; kannDoppeltSpringen = true; } bewegungsInputs.y -= schwerkraft * Time.deltaTime; } else if (!charController.isGrounded) { if (Input.GetButtonDown("Jump") && kannDoppeltSpringen) { bewegungsInputs.y = sprungGeschwindigkeit; kannDoppeltSpringen = false; } bewegungsInputs.y -= schwerkraft * Time.deltaTime; } charController.Move(bewegungsInputs * bewegungsGeschwindigkeit * Time.deltaTime); } private void Bewegen(Vector3 richtung) { Laufen(richtung); Rotieren(richtung); } private void Laufen(Vector3 richtung) { Vector3 neueRichtung = Quaternion.LookRotation(Camera.main.transform.position - transform.position).eulerAngles; neueRichtung.x = 0; neueRichtung.z = 0; richtungsObjekt.transform.rotation = Quaternion.Euler(neueRichtung); transform.Translate(-richtung * Time.deltaTime * bewegungsGeschwindigkeit, richtungsObjekt.transform); } private void Rotieren(Vector3 richtung) { Quaternion neueRotation = Quaternion.LookRotation(-richtung); transform.rotation = Quaternion.Slerp(transform.rotation, neueRotation * richtungsObjekt.transform.rotation, Time.deltaTime * rotationsGeschwindigkeit); } |
Es ist ja keine Schande etwas falsch zu machen, als Programmierer tu ich das täglich, [...].
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 |
public float sprungKraft = 10.0f; public float bewegungsGeschwindigkeit = 10.0f; public float rotationsGeschwindigkeit = 8.0f; private bool aufDemBoden; private float bodenLaenge = 1.5f; private RaycastHit bodenTreffer; public GameObject richtungsObjekt; private void Update() { if (Input.GetAxis("Horizontal") < 0) { Bewegen(Vector3.left); } if (Input.GetAxis("Horizontal") > 0) { Bewegen(Vector3.right); } if (Input.GetAxis("Vertical") < 0) { Bewegen(Vector3.down); } if (Input.GetAxis("Vertical") > 0) { Bewegen(Vector3.forward); } Vector3 physikZentrum = transform.position + GetComponent<CapsuleCollider>().center; if (Physics.Raycast(physikZentrum, Vector3.down, out bodenTreffer, bodenLaenge)) { if (bodenTreffer.transform.gameObject.tag != "Player") { aufDemBoden = true; } } else { aufDemBoden = false; } if (Input.GetKeyDown("space") && aufDemBoden) { GetComponent<Rigidbody>().AddForce(Vector3.up * sprungKraft); } } private void Bewegen(Vector3 richtung) { Laufen(richtung); Rotieren(richtung); } private void Laufen(Vector3 richtung) { Vector3 neueRichtung = Quaternion.LookRotation(Camera.main.transform.position - transform.position).eulerAngles; neueRichtung.x = 0; neueRichtung.z = 0; richtungsObjekt.transform.rotation = Quaternion.Euler(neueRichtung); transform.Translate(-richtung * Time.deltaTime * bewegungsGeschwindigkeit, richtungsObjekt.transform); } private void Rotieren(Vector3 richtung) { Quaternion neueRotation = Quaternion.LookRotation(-richtung); transform.rotation = Quaternion.Slerp(transform.rotation, neueRotation * richtungsObjekt.transform.rotation, Time.deltaTime * rotationsGeschwindigkeit); } |
Es ist ja keine Schande etwas falsch zu machen, als Programmierer tu ich das täglich, [...].
Werbeanzeige