簡體   English   中英

如何設置相機與縮放對象的距離?

[英]How to set the distance of the camera from a scaling object?

我的相機必須聚焦在可以隨時間縮放的GameObject上。 我如何計算相機位置,以便它始終與此GameObject保持相同的距離? 我已經嘗試過做類似的事情

camera.position.y += object.scaleFactor / 2;
camera.position.z -= object.scaleFactor / 2;

但是物體變得越大,它的作用就越小。 我正在考慮使用邊界框,您認為它可行嗎?

非常感謝 !

用這個:

// compute this when scale is 1.0f
Vector3 originalPosition = camera.position;
Vector3 originalDistance = camera.position - gameObject.position;

// then use:
camera.position = originalPosition + originalDistance * gameObject.scaleFactor;

如果這不起作用,請更詳細地描述您的情況,我將編輯答案

例如:如果您希望相機與物體保持距離,則必須使用BoundingSphere.radius

// compute this when scale is 1.0f
Vector3 originalPosition = camera.position;
Vector3 temp = camera.position - gameObject.position;
Vector3 originalDirection = temp.normalized;
float originalDistance = temp.magnitude - boundingSphere.radius;

// use this when object is scaled:
camera.position = originalPosition + originalDirection * (boundingSphere.radius + originalDistance);
public class ObjectRelativeScale : MonoBehaviour
{
    public float ObjectScale = 1.0f;
    private Vector3 _initialScale;

void Start()
{
    _initialScale = transform.localScale;
}

void Update()
{
    var cameraMainTransform = Camera.main.transform;
    var plane = new Plane(cameraMainTransform.forward, cameraMainTransform.position);
    float dist = plane.GetDistanceToPoint(transform.position);
    transform.localScale = _initialScale * dist * ObjectScale;
}

}

基本上周圍的方式更好,根據相機位置縮放對象。

干杯!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM