Du bist nicht angemeldet.

Werbeanzeige

1

19.06.2020, 15:01

X Variable wird nicht angenommen

Warum wird die X Variable nicht angenommen?


C#-Quelltext

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

public class Sphere2Controller : MonoBehaviour {

    public float Speed = 1.0f;
    float x = 1.0f;
    Vector3 Richtung = new Vector3( x , 0.0f , 0.0f);

    
    // Update is called once per frame
    void Update () {

        
        this.transform.position += Richtung * Speed * Time.deltaTime;
       

        Debug.Log(x);
    }
}


Bitte Code-Tags verwenden. Danke!

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Michael« (19.06.2020, 20:31)


2

20.06.2020, 12:30

Mit nicht angenommen meinst du, dass sich das GameObject nicht bewegt? Wenn ja, dann liegt es vermutlich an zu kleinen Werten. Time.DeltaTime liefert die Zeit in Sekunden, die seit dem letzten Frame vergangen sind, der Wert ist also üblicherweise deutlich kleiner als 1. Erhöhe am besten einmal Speed auf 10.0f oder 100.0f und schau, ob es dann funktioniert.

David Scherfgen

Administrator

Beiträge: 10 306

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

3

20.06.2020, 15:16

Wichtigste Frage: Was erwartest du von deinem Code? Was passiert stattdessen?

4

20.06.2020, 16:29

Warum wird die X Variable nicht angenommen?


C#-Quelltext

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

public class Sphere2Controller : MonoBehaviour {

    public float Speed = 1.0f;
    float x = 1.0f;
    Vector3 Richtung = new Vector3( x , 0.0f , 0.0f);

    
    // Update is called once per frame
    void Update () {

        
        this.transform.position += Richtung * Speed * Time.deltaTime;
       

        Debug.Log(x);
    }
}


Bitte Code-Tags verwenden. Danke!






Ich weiß nicht genau was du meinst aber evtl. hilft meine Antwort dir ja weiter ^^

Mit dem Schlüsselwort "this" sprichst du das Objekt an, mit dem dieser Script verbunden ist.
Heißt du ziehst den Script mit der linken Maus-Taste auf das Objekt was du bewegen möchtest, in diesem Fall vermute ich mal, ist das Objekt eine Kugel.

Hier eine minimale Verbesserung deines Codes:

public class Move : MonoBehaviour
{
public float Speed = 1.0f; // Geschwindigkeit der Kugel.
float x = 1.0f; // horizontale Bewegung.

void Update()
{
moveBall(); // In der Update Methode wird "moveBall()" aufgerufen und druchgängig aktualisiert.
}

void moveBall()
{
Vector3 Richtung = new Vector3(x, 0.0f, 0.0f);

// Der Script muss auf ein Objekt gezogen werden, damit es sich bewegt.
this.transform.position += Richtung * Speed * Time.deltaTime;

Debug.Log(x);
}
}

Falls du möchtest dass der Wert x stetig steigt (ich vermute mal das ist dein Ziel), musst du einfach die x Variable vergrößern:

public class Move : MonoBehaviour
{
public float Speed = 1.0f; // Geschwindigkeit der Kugel.
float x = 1.0f; // horizontale Bewegung.

void Update()
{
updateX();
moveBall(); // In der Update Methode wird "moveBall()" aufgerufen und druchgängig aktualisiert.
}

void updateX()
{
x += 0.1f;
}

void moveBall()
{
Vector3 Richtung = new Vector3(x, 0.0f, 0.0f);

// Der Script muss auf ein Objekt gezogen werden, damit es sich bewegt.
this.transform.position += Richtung * Speed * Time.deltaTime;

Debug.Log(x);
}
}

Dadurch wird der Ball stetig schneller und auch in der Konsole wird der Wert aktualisiert und angezeigt ^^
Hoffe ich konnte dir helfen :)

5

20.06.2020, 16:34

Ich habe eben bemerkt dass meine Antwort völlig unübersichtlich ist und versuche es nochmal.
Hoffe jetzt wird es richtig angezeigt.

C#-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public class Move : MonoBehaviour
{
public float Speed = 1.0f; // Geschwindigkeit der Kugel.
float x = 1.0f; // horizontale Bewegung.

void Update()
{
moveBall(); // In der Update Methode wird "moveBall()" aufgerufen und druchgängig aktualisiert.
}

void moveBall()
{
Vector3 Richtung = new Vector3(x, 0.0f, 0.0f);

// Der Script muss auf ein Objekt gezogen werden, damit es sich bewegt.
this.transform.position += Richtung * Speed * Time.deltaTime;

Debug.Log(x);
}
}


Den ersten Code wenn du einfach willst dass dein Ball sich in einer konstanten Geschwindigkeit forbewegt, oder:

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
public class Move : MonoBehaviour
{
public float Speed = 1.0f; // Geschwindigkeit der Kugel.
float x = 1.0f; // horizontale Bewegung.

void Update()
{
updateX();
moveBall(); // In der Update Methode wird "moveBall()" aufgerufen und druchgängig aktualisiert.
}

void updateX()
{
x += 0.1f;
}

void moveBall()
{
Vector3 Richtung = new Vector3(x, 0.0f, 0.0f);

// Der Script muss auf ein Objekt gezogen werden, damit es sich bewegt.
this.transform.position += Richtung * Speed * Time.deltaTime;

Debug.Log(x);
}
}


Wenn du den Wert der x-Variable aktualisieren möchtest. Hoffe jetzt wird es richtig angezeigt ^^

Werbeanzeige