• Benvenuto in Making Videogames!
  • Dai sfogo alla tua fantasia!
  • Crea il tuo Videogioco!
Benvenuto ospite! Login Registrati




Valutazione discussione:
  • 0 voto(i) - 0 media
  • 1
  • 2
  • 3
  • 4
  • 5
Script basilare per il movimento tramite fisica
#1
Sempre il solito imbecille di ritorno alle basi delle basi, muovere uno sprite in alto e basso, ma per ora ho scritto un codice che dovrebbe essere corretto, ma non fa ciò che voglio
[Immagine: 335fekm.png]
[Immagine: 2mmi73r.png]
 
Rispondi
#2
Perché aggiungi la forza? Poi quanto è la massa del corpo rigido? Non era meglio lavorare con la velocity del corpo rigido?

Codice:
GetComponent<Rigidbody2D>().velocity = new Vector2(0, walk_speed);
 
Rispondi
#3
Altre volte usavo la forza, e modificando un pò la massa del gameobject funzionava, ora no. Con velocity inserito nel codice di sopra, al posto di addForce, l'oggetto comincia a muoversi alla pressione di w ma continua (logicamente) quindi velocity nel mio caso non va bene, nello specifico sto cercando di muovere una "piattaforma" e come nella realtà si ferma quando io smetto di premere il bottone. E poi se ho la piattaforma e il muro di sopra, dovrebbero collidere in quanto entrambi hanno collider e rigidbody (entrambi kinematici perchè non devono cadere per effetto della gravità) ma nulla si compenetrano -.-
 
Rispondi
#4
Per i muri basta che gli dai un box collider, il rigidbody non è necessario visto che non li muovi.
L'unica cosa che dovrebbe avere un rigidbody sono la palla e le racchette, ovvio anche queste dovranno avere una collisione, la palla un circle_collider, le racchette un'altro box collider.

Il pong si può fare in molti modi, sfumature diverse, in base a quanto vuoi gestire tu la fisica o lasciarla gestire a unity.

Vedo un 1 sulle Gravity Scale?
 
Rispondi
#5
Ma fare un
Codice:
if(Input.GetKeyUp("w")
{
rigidbody2D.velocity.y = 0;
}
per fermare la racchetta quando smetti di premere il tasto?
 
Rispondi
#6
Beh ora ci ho pensato un pò e credo che non serva utilizzare la fisica. Un tranform.translate credo andrà bene in fondo è un gioco per me che non dovrò rilasciare, in più parliamo di 2 rettangoli che dovranno muoversi mentre la palla sarà l'unica affetta dalla fisica
 
Rispondi
#7
Ricreato per la...non so 30a volta, il pad si muove e la palla pure, anche se non nella direzione voluta, avevo pensato ad un 50/50 tra spingerla a sinistra e giu (quindi Vector.Lerp credo), ma il problema è un pò prima e più importante, con rigidbody.AddForce, al solito non funziona, ho provato con un infinità di modi moltiplicando per Time.deltaTime e per una variabile che ho portato fino a 5000 ma niente da fare, la palla ha rigidbody e collider perchè ricordo che in unity 4 dovevano esserci entrambi affinche il collider funzionasse, non voglio usare velocity perchè esiste addForce e con quella posso spingere la palla in diagonale anziche solo dritta, il codice della palla è questo:
Codice:
using UnityEngine;
using System.Collections;

public class ballBehaviour : MonoBehaviour {

    public float ball_Init_Force=5f;
    //Vector3 startPosition=new Vector3(-0.123f,-0.21f,0.0f);

    void Start () {
        //Spinta della palla
        Rigidbody2D rig=GetComponent<Rigidbody2D>();
        rig.AddForce(Vector2.left*ball_Init_Force*Time.deltaTime);
    }

}
mentre quello del pad è questo (ma credo non abbia molta importanza):
Codice:
using UnityEngine;
using System.Collections;

public class playerMove : MonoBehaviour {

    public float force=5f;
    
    // Update is called once per frame
    void Update ()
    {
        if(Input.GetKey(KeyCode.UpArrow))
            moveUp();

        if(Input.GetKey (KeyCode.DownArrow))
            moveDown();
    }

    void moveUp()
    {
        transform.position+=(Vector3.up*force*Time.deltaTime);
    }

    void moveDown()
    {
        transform.position+=(Vector3.down*force*Time.deltaTime);
    }
}
Sto impazzendo è assurdo, sono riuscito a far spawnare oggeti con i raycast in 3d che credevo fossi impossibile far funzionare i raycast e mi blocco con queste cavolate -.-

Per ora si muove con add force ci sono riuscito, ho messo gravity scale a 0 is kinect false (a quanto pare is kinect non permette il movimento tramite metodi del rigidbody, probabilmente è ovvio ma non per me) ma la variabile moltiplicata (force) ha valore 3000 ed è ancora un pò lenta...
 
Rispondi
  


Discussioni simili
Discussione Autore Risposte Letto Ultimo messaggio
  Movimento oggetto 2D nel canvas Aconeron 1 399 25-04-2017, 08:50 PM
Ultimo messaggio: Aconeron
  Script per il livello successivo davidecreatoreapp 9 1,351 30-04-2015, 05:41 PM
Ultimo messaggio: Blackg96
  Blocchi in movimento Platform 2D JessePinkman 0 602 05-12-2014, 09:48 AM
Ultimo messaggio: JessePinkman
  script base per movimento Fast92 9 1,465 05-11-2013, 02:43 AM
Ultimo messaggio: WilSoft90

Vai al forum:


Browsing: 1 Ospite(i)