Zablokowanie wychodzenia poza granice Unity 2D


(AstronHK) #1

Witam, mam problem z moją grą, robię grę typu ping pong. Zrobiłem do niej już boosterki i teraz zauważyłem, że za każdym razem gdy paletka moja lub bota jest większa lub mniejsza od początkowej to ona albo nie dolatuje do granicy mapy albo przelatuje daleko za nią. Granice zrobione są z rozciągniętych box colliderów, tak aby piłeczka mogła się odbijać, natomiast nie chciały one zatrzymać moich paletek więc granicę dla nich zrobiłem w skrypcie, tak aby nie mogły wylecieć poza dane współrzędne. Moje pytanie brzmi: Jak mogę zrobić to, żeby paletka zatrzymywała się dopiero na wyznaczonej granicy, nie dalej, nie bliżej.

Skrypt odpowiadający za poruszanie:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityStandardAssets.CrossPlatformInput;

public class Movement : MonoBehaviour {

public float speedp1;
public Vector3 carPos;
private float direction;



private void Start()
{
    carPos = this.gameObject.transform.position;

}
private void Update()
{
 float war= this.gameObject.GetComponent<SpriteRenderer>().bounds.size.x;
    direction =CrossPlatformInputManager.GetAxis("Horizontal");
        carPos.x += direction *Time.deltaTime* speedp1;
        carPos.x = Mathf.Clamp(carPos.x, -6.9f, 6.9f);
        this.gameObject.transform.position = carPos;

   if(this.transform.localScale.x > 12)
    {
        this.transform.localScale = new Vector3(12f,this.transform.localScale.y,this.transform.localScale.z);
    }
   else if(this.transform.localScale.x < 0.05)
    {
        this.transform.localScale = new Vector3(0.05f, this.transform.localScale.y, this.transform.localScale.z);
    }
   
}

}