![](/img/trans.png)
[英]In a 3D monogame project, how do I place an object a set distance in front of the camera?
[英]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.