Du bist nicht angemeldet.

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

Nico Lehwald

Frischling

  • »Nico Lehwald« ist der Autor dieses Themas

Beiträge: 10

Wohnort: Darmstadt

  • Private Nachricht senden

1

19.05.2016, 22:26

[C# - Script / Unity] Reale Uhrzeit ermitteln

Guten Abend,

Ich habe mir mal einige Tutorials angeschaut, zum Thema Tag/Nacht - Wechsel und möchte gerne nun für ein Game dies auch nutzen. Habe alles fein eingebunden, es dreht sich alles, nur habe ein Problem, den Wert zu ermitteln, dass die Sonne ggf. Mond eine reale Ablauf hat.

Grundlegende Sachen:

Die Sonne befindet sich 500m über den 0 - Punkt, mit einer Neigung von 90°
Der Mond befindet sich -500m unter 0 - Punkt, mit einer Neigung von -90°.

Nun habe ich gerade das Problem, dass ich nicht den passenden Float - Wert finde, dass ein Tag 24 Stunden dauert.
Ich habe schon einige Berechnungen selbst vorgenommen, aber irgendwie werde ich nicht ganz schlau draus.
Vielleicht kann man mir sinnvoll helfen, wie ich das am besten berechnen kann - und wenn noch am besten anzeigen lassen, wie spät es ist. :D

Hier ist mein Code, vielleicht kann mir jemand helfen:

C#-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
using UnityEngine;
using System.Collections;

public class Sonne : MonoBehaviour {

    // Use this for initialization
    void Start () {
    
    }
    
    // Update is called once per frame
    void Update ()
    {
        transform.RotateAround(Vector3.zero, Vector3.right, 10f * Time.deltaTime); // 10f = 40sec ???
        transform.LookAt(Vector3.zero);
        
    }
}


Beste Grüße
Nico

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

2

19.05.2016, 22:56

Du musst gucken bei welchem Wert du eine komplette Umdrehung erreichst. Diesen teilst du durch 24 und hast dann den Wert um den es sich pro Stunde ändert. Bei geringeren Abstufungen teilst du dann eben durch den passenden Wert. Alternativ kannst du auch mit einer halben oder viertel Drehung arbeiten. Das kannst du ja theoretisch im Editor von Hand machen und dir die Rotationswerte dabei angucken. Soweit ich das grad im Kopf habe gibst du die Werte für Rotation direkt in Grad an. Soll heißen bei einem Wert von 360 hättest du eine komplette Umdrehung.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

Superwayne

Treue Seele

Beiträge: 242

Beruf: Student & App Entwickler (Xamarin)

  • Private Nachricht senden

3

20.05.2016, 11:34

Ergänzung zu dem Beitrag von Schorsch:

Mit Time.deltaTime machst du das ganze von der Framerate unabhängig (Update wird ja einmal pro Frame aufgerufen). "360f * Time.deltaTime" führt dazu, dass eine komplette Umdrehung in einer Sekunde passiert. Davon ausgehend kannst du dann die Zeit für eine Umdrehung zu verändern (z.B. "* 0.5f" für eine Umdrehung pro 2 Sekunden oder "* 2f" für eine Umdrehung in 0.5 Sekunden).

Werbeanzeige