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

MitgliedXYZ

Alter Hase

  • »MitgliedXYZ« ist der Autor dieses Themas

Beiträge: 1 369

Wohnort: Bayern

  • Private Nachricht senden

1

18.02.2012, 14:20

Unity3d: Objekt in kleineren Schritten vorwärtsbewegen

Hallo Community,
hat jemand eine Idee, ob es in Unity auch möglich ist ein Objekt in einem kleineren Schritt als 1 (sondern z.b. 0,5) vorwärts zu bewegen?
Mit diesem Skript wird das Objekt gleich weit vorwärtsbewegt, aber ich hätte es gerne das es nur halb so weit sich vorwärtsbewegt:

C#-Quelltext

1
            transform.Translate(0, 0, 1);

So ungefähr (aber so klappt das irgendwie nicht...):

C#-Quelltext

1
            transform.Translate(0, 0, 0.5);


Danke schon mal.

2

18.02.2012, 14:36

Wie wärs mit

Quellcode

1
transform.Translate(0,0,0.5*Time.deltaTime);

So müsste es eigentlich funktionieren.

MitgliedXYZ

Alter Hase

  • »MitgliedXYZ« ist der Autor dieses Themas

Beiträge: 1 369

Wohnort: Bayern

  • Private Nachricht senden

3

18.02.2012, 16:30

Danke für den Tipp, aber dann erscheint folgende Fehlermeldung:
Assets/Menue.cs(22,23): error CS1502: The best overloaded method match for `UnityEngine.Transform.Translate(float, float, float)' has some invalid arguments

Und wenn ich so etwas eingebe (1 geteilt durch 2 ist ja auch 0,5), dann bewegt sich gar nichts mehr. Komisch.

C#-Quelltext

1
 transform.Translate(0, 0, 1/2);


In der Unity3d-Referenz habe ich nachgelesen, das die werte vom Typ Float sein müssen. Dieser erlaubt aber auch Kommazahlen, oder?

Harry222

Alter Hase

Beiträge: 864

Beruf: Student

  • Private Nachricht senden

4

18.02.2012, 16:32

Das musst du so machen:

C#-Quelltext

1
transform.Translate(0, 0, 0.5f);
Das entscheidende ist das f! :)
Bei double funktioniert es auch ohne das f.

D.h.:

C-/C++-Quelltext

1
    transform.Translate(0,0,0.5f*Time.deltaTime);

Mfg Harry222

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »Harry222« (18.02.2012, 16:38)


Sylence

Community-Fossil

Beiträge: 1 663

Beruf: Softwareentwickler

  • Private Nachricht senden

5

18.02.2012, 18:27

Und wenn ich so etwas eingebe (1 geteilt durch 2 ist ja auch 0,5), dann bewegt sich gar nichts mehr. Komisch.


1/2 ist 0 und nicht 0.5. 1.0/2.0 ist 0.5 (Stichwort integerdivision)

MitgliedXYZ

Alter Hase

  • »MitgliedXYZ« ist der Autor dieses Themas

Beiträge: 1 369

Wohnort: Bayern

  • Private Nachricht senden

6

19.02.2012, 13:34

Man lernt doch immer wieder was dazu...
Danke für die Hilfe, jetzt funktioniert es.

DerMark

Treue Seele

Beiträge: 324

Wohnort: Emsdetten

Beruf: Softwareentwickler

  • Private Nachricht senden

7

20.02.2012, 08:57

Es wäre übrigens schön wenn du zukünftig bei solchen problemen viel mehr Informationen liefern würdest, zB h#tte hier schon allein die Fehlermeldung gereicht um das Problem zu lösen, noch dazu bitte kein "so ungefähr" Code sondern den Code der tatsächlich das Problem verursacht, denn dein "so ungefähr" Code hätte in wirklichkeit auch dieses 1/2 anstatt 0.5 enthalten können und damit wären wir auch wieder schneller zum Ergebniss gekommen ;)

MitgliedXYZ

Alter Hase

  • »MitgliedXYZ« ist der Autor dieses Themas

Beiträge: 1 369

Wohnort: Bayern

  • Private Nachricht senden

8

20.02.2012, 10:07

Ok, in Zukunft werde ich gleich mehrere Informationen reinschreiben.
Und ich hab halt das "so ungefähr" hingeschrieben, weil ich dachte das ihr so besser versteht, was ich gesucht habe.

Werbeanzeige