Pozycja jednego obiektu względem drugiego na osi x

0

Cześć

Mam problem z ustawieniem położenia jednego obiektu względem drugiego na osi x. Pierwszy obiekt jest na pozycji x = 5, natomiast drugi obiekt ma być tak jak by przyklejony do tego pierwszego:

public class Ball : MonoBehaviour
public class Ball : MonoBehaviour

{
    public TestBrick tb1;

    private Vector3 paddleToBallVector;

	void Start ()
    {
        paddleToBallVector = this.transform.position - tb1.transform.position;
        
    }
	

	void Update ()
    {
        this.transform.position = tb1.transform.position + paddleToBallVector;
        print("pilka" + paddleToBallVector);
    }
}

Obiekt Ball ma być "podłączony" do obiektu tb1. Kod w tej formie mi działa ale go nie rozumiem. Na początku myślałem, że linijka określająca położenie obiektu ```
Ball


```csharp
paddleToBallVector = this.transform.position = tb1.transform.position;

Ale wtedy obiekt jest przesunięty względem tego pierwszego dokładnie o jego wartość na osi x. Robi takie wrażenie, że jego punktem zerowym jest drugi obiekt i od niego liczy położenie na osi x.
Co rozumiem tutaj źle?

2

Różnica pozycji (w metodzie Start()) daje pozycję lokalną. Dodając obecną pozycję globalną paletki do pozycji lokalnej piłeczki, otrzymujemy pozycję globalną piłeczki:
this.transform.position = tb1.transform.position + paddleToBallVector;

###W Unity możesz to zrobić lepiej:

  1. Update możesz całkiem wywalić.
  2. W Start wywal cały kod i napisz transform.SetParent(tb1.transform);

Albo w ogóle nie pisz kodu (odłącz skrypt od obiektu), tylko w edytorze, w drzewku obiektów przeciągnij piłkę na paletkę (piłka będzie obiektem dzieckiem paletki).

##Twoja propozycja:
paddleToBallVector = this.transform.position = tb1.transform.position;

dla Twojego kodu znajdującego się w metodzie Update, może to dużo napsuć. Lokalna/relatywna pozycja piłeczki będzie zależna od początkowej pozycji tb1.
Zakładając, że paletka się nie rusza, piłeczka będzie miała pozycję:
2.0f * tb1.transform.position;,
ponieważ to jest w tym przypadku to samo co:
tb1.transform.position + paddleToBallVector;

1 użytkowników online, w tym zalogowanych: 0, gości: 1