SmoothDamp s polohy svorky

hlasů
2

Mám kameru po hráči s využitím ‚SmoothDamp‘ Nicméně bych chtěl zastavit kameru jít ven hranic na pozadí sprite.

Dokážu to zvlášť s ‚SmoothDamp‘, ale ne s ‚Mathf.Clamp‘.

transform.position = Vector3.SmoothDamp(transform.position, targetPos, ref velocity, smoothTime);

nebo

bgBounds = GameObject.Find(Background).GetComponentInChildren<SpriteRenderer>();
bottomLeftLimit = bgBounds.sprite.bounds.min;
topRightLimit = bgBounds.sprite.bounds.max;

transform.position = new Vector3(Mathf.Clamp(transform.position.x, bottomLeftLimit.x, topRightLimit.x), Mathf.Clamp(transform.position.y, bottomLeftLimit.y, topRightLimit.y), transform.position.z);
Položena 27/11/2018 v 17:50
zdroj uživatelem
V jiných jazycích...                            


1 odpovědí

hlasů
2

Aby se zajistilo, že hranice orthographic kamery Nenechávejte Boundsje třeba zahrnout rozsahy pohledu kamery jako výplň do vašich svorek.

Můžete použít camera.orthographicSizea camera.aspectzískat rozsahy pohledu kamery.

// Clamp the target position to be within the boundaries

float cameraVertExtent = camera.orthographicSize;
float cameraHorizExtent = camera.orthographicSize * camera.aspect;

Vector3 clampedTargetPos = new Vector3(
        Mathf.Clamp(targetPos.x, bottomLeftLimit.x+cameraHorizExtent, topRightLimit.x-cameraHorizExtent), 
        Mathf.Clamp(targetPos.y, bottomLeftLimit.y+cameraVertExtent, topRightLimit.y-cameraVertExtent),
        transform.position.z
        );

// SmoothDamp to the clamped target position.
transform.position = Vector3.SmoothDamp(transform.position, clampedTargetPos, ref velocity, smoothTime);

Pokud jste nebyli pomocí ortografické kamery, budete muset zjistit, kde jsou hrany pohledu kamery protínají s pozadím a řešit nezbytnou polstrování odtamtud.

Odpovězeno 27/11/2018 v 18:07
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more