• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Problem ze skryptem w unity

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
0 głosów
293 wizyt
pytanie zadane 22 maja 2016 w C# przez Jan1233 Użytkownik (590 p.)

Witam. Ostatnio z braku zajęcia zacząłem robić prostą gre w unity i znalazłem w internecie skrypt na poruszanie się platformy tam i z powrotem po linii poziomej. Problem zaczął się wtedy gdy próbowałem przerobić go tak aby po kliknięciu w ekran obiekt spadał z miejsca w którym się aktualnie znajdował jednak wyskakuje mi błąd. Czy mógł by mi ktoś pomóc przy tym skrypcie ?

sing UnityEngine;
using System.Collections;
  
public class MovingPlatform : MonoBehaviour {
  
    [SerializeField]
    Transform platform;
  
    [SerializeField]
    Transform startTransform;
  
    [SerializeField]
    Transform endTransform;
  
    [SerializeField]
    float platformSpeed;
  
    Vector3 direction;
    Transform destination;
          
    void Start (){
        SetDestination(startTransform);
    }
  
    void FixedUpdate(){
        platform.GetComponent<Rigidbody>().rb.velocity = new Vector2(dir*speed, rb.velocity.y);
        if(Vector3.Distance (platform.position, destination.position) < platformSpeed * Time.fixedDeltaTime){
            SetDestination(destination == startTransform ? endTransform : startTransform);
        }
    }
  
  
    void OnDrawGizmos(){
        Gizmos.color = Color.green;
        Gizmos.DrawWireCube(startTransform.position, platform.localScale);
  
        Gizmos.color = Color.red;
        Gizmos.DrawWireCube(endTransform.position, platform.localScale);
    }
  
    void SetDestination(Transform dest){
        destination = dest;
        direction = (destination.position - platform.position).normalized;
   
 if (Input.isKeyDown("Space"))
{
  rb.gravityScale = 1.0f;
  rb.velocity = new Vector2(0, rb.velocity.y);
}
 
 }
  
}
 

  

1 odpowiedź

0 głosów
odpowiedź 22 maja 2016 przez niezalogowany
wybrane 23 maja 2016 przez Jan1233
 
Najlepsza

Kojarzę to pytanie (chyba nawet na nie odpowiadałem), w czym dokładnie masz problem?

Kod powinien wyglądać mniej więcej tak (pseudo Unity C#)

using UnityEngine;
using System.Collections;
   
public class MovingPlatform : MonoBehaviour 
{
    Rigidbody2D m_rb;

    public float speed = 5f; // prędkość poruszania się platformy

    public float leftPosition; // lewy strona do której ma dotrzeć platforma 
    public float rightPosition; // prawa strona, platforma będzie poruszała się pomiędzy leftPosition i rightPosition

    int m_direction = -1; // kierunek poruszania platformy, tutaj zawsze zaczyna od poruszania się w prawo

    void Start()
    {
        m_rb = GetComponent<Rigidbody2D>();
        if (m_rb == null)
        {
            Debug.LogError("Rigidbody2D is not attached to object!");
            Debug.Break();
        }
        m_rb.gravityScale = 0f;
    }


    void Update()
    {
        if (transform.position.x < leftPosition || transform.position.x > rightPosition)
            m_direction *= -1; // jeżeli czas na zmianę kierunku ruchu: odwróć kierunek!

        if (Input.isKeyDown("Space"))
        {
            m_direction = 0;
            m_rb.gravityScale = 1f;
        }
    }


    void FixedUpdate()
    {
        m_rb.velocity = new Vector2(m_direction * speed, m_rb.velocity.y);
    }
}

Co należy zauważyć: kod pisałem zupełnie "na sucho" i na czuja więc mogą być jakieś błędy oraz w momencie gdy jakiś inny obiekt będzie wchodził w fizyczną interakcję z tym obiektem to platforma się zapadnie pod ciężarem innego obiektu więc należy na wszelkie kolizje odpowiednio reagować (można np. zwiększyć znacznie masę platformy, albo przy odpowiednich odchyleniach y resetować ją do wartości początkowej)

komentarz 28 maja 2016 przez Jan1233 Użytkownik (590 p.)

Nadal wyskakuje taki sam  błąd

komentarz 28 maja 2016 przez niezalogowany
No to popraw je.

Przecież pisałem, że piszę ten kod z pamięci i bez jego weryfikacji, ma on jedynie przekazać ideę rozwiązania (co moim zadniem robi całkiem nieźle). Twoja postawa jest godna potępienia...

Podobne pytania

0 głosów
0 odpowiedzi 493 wizyt
pytanie zadane 11 grudnia 2018 w C# przez misterbrow Nowicjusz (140 p.)
0 głosów
2 odpowiedzi 299 wizyt
pytanie zadane 8 października 2016 w PHP przez ThePatrykOOO Dyskutant (8,400 p.)
0 głosów
1 odpowiedź 136 wizyt
pytanie zadane 24 września 2016 w JavaScript przez Bartosz Umiński Początkujący (270 p.)

93,439 zapytań

142,431 odpowiedzi

322,674 komentarzy

62,802 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

...