• Benvenuto in Making Videogames!
  • Condividi la tua passione!
  • Crea il tuo Videogioco!
Benvenuto ospite! Login Registrati



Valutazione discussione:
  • 0 voto(i) - 0 media
  • 1
  • 2
  • 3
  • 4
  • 5
Title: Rigidbody2D "scivoloso"
Modi discussione
#1
Ciao a tutti!  Big Grin
Come da titolo, oggi sono qui perché ho problemi con i rigidbody2d, in particolare non riesco a capire come trascinare due corpi rigidi tra loro, qualsiasi tentativo provo noto sempre l'effetto "scivolo".
Per farvi capire meglio, vedete questa mia piccola GIF.

Link GIF https://prnt.sc/r3akzo

Quello che voglio ottenere è semplicemente il cubo bianco che segue il rettangolo nero sotto.
Purtroppo non riesco in nessun modo a ottenere l'effetto desiderato, i tipi di materiali fisici sembrano non fare effetto, aggiungere ulteriore peso stessa cosa...
Come posso risolvere, qualcosa mi sfugge?
Utilizzo Unity 2017.4.35f1
 
Reply
#2
mhh un valore Dynamic Friction=1 ?
Altrimenti mi verrebbe da pensare ai Join per rendere "solidale" l'oggetto che sta sopra a quello sotto, in sostanza lo "agganci" in modo rigido appena si toccano. Però non sono molto esperto dei Join, ho solo giocherellato con gli esempi.
 
Reply
#3
Scusa la mia risposta in ritardo, credevo di aver attivo le notifiche via email....
Grazie di nuovo per la risposta!
Purtroppo quel cubo bianco nell'esempio dovrà essere il giocatore del mio gioco platform 2d, quindi devo muoverlo per tutta la mappa.
Il problema è che se voglio creare un piccolo sprite con rigidbody il "giocatore" scivola su tutte le superfici piccole (come il rettangolo nero dell'esempio)
Questo non succede usando le tilemap ma perché sono oggetti statici...
Con qualsiasi rigidbody in movimento il mio "giocatore" ci scivola sopra
Una soluzione non definitiva che ho trovato è creare questo banale script (che trovi qui sotto) e inserirlo nei gameobject in cui voglio poterci salire sopra col "giocatore".
Però cosi non so' perché i movimenti del giocatore sono scattosi, per muoverlo uso rigidbody2d.AddForce(new Vector2(0f, 3f));
Non so' che fare... 

Script
Codice:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Spostagiocatore : MonoBehaviour {

    public Transform giocatore;
    public Transform giocatore_;

    void OnTriggerEnter2D(Collider2D coll)
    {
        if (coll.gameObject.tag == "Giocatore")
        {
            giocatore.transform.SetParent(giocatore_);
            
        }
    }

    void OnTriggerExit2D(Collider2D coll)
    {
        if (coll.gameObject.tag == "Giocatore")
        {
            giocatore.parent=null;
        }
    }
}
 
Reply
  


Vai al forum:


Browsing: 1 Ospite(i)