C# 如何用c语言实现三维摄像机的变焦#
所以基本上我写了这段代码:C# 如何用c语言实现三维摄像机的变焦#,c#,unity3d,3d,camera,zooming,C#,Unity3d,3d,Camera,Zooming,所以基本上我写了这段代码: int zoom = 20; int normal = 31; float smooth = 5; private bool isZoomed = false; private bool notZoomed = false; void Update() { if (Input.GetKeyDown(KeyCode.LeftShift)) { isZoomed = !isZoomed; } if (isZoomed
int zoom = 20;
int normal = 31;
float smooth = 5;
private bool isZoomed = false;
private bool notZoomed = false;
void Update()
{
if (Input.GetKeyDown(KeyCode.LeftShift))
{
isZoomed = !isZoomed;
}
if (isZoomed)
{
GetComponent<Camera>().fieldOfView = Mathf.Lerp(GetComponent<Camera>().fieldOfView, zoom, Time.deltaTime * smooth);
}
if (Input.GetKeyUp(KeyCode.LeftShift))
{
notZoomed = !notZoomed;
}
if (notZoomed)
{
GetComponent<Camera>().fieldOfView = Mathf.Lerp(GetComponent<Camera>().fieldOfView, normal, Time.deltaTime * smooth);
}
}
int zoom=20;
正常积分=31;
浮动平滑=5;
private bool isZoomed=假;
private bool notZoomed=假;
无效更新()
{
if(Input.GetKeyDown(KeyCode.LeftShift))
{
IsZomed=!IsZomed;
}
如果(放大)
{
GetComponent().fieldOfView=Mathf.Lerp(GetComponent().fieldOfView,zoom,Time.deltaTime*平滑);
}
if(Input.GetKeyUp(KeyCode.LeftShift))
{
未缩放=!未缩放;
}
如果(未缩放)
{
GetComponent().fieldOfView=Mathf.Lerp(GetComponent().fieldOfView,normal,Time.deltaTime*平滑);
}
}
这是为了平滑缩放,但效果不太好,充满了错误ecc。。
我想做一个类似的“minecraft Optifine Zoom”(基本上当我按住shift键时,它会变焦,如果我真的将它移回正常的摄像机视野),请有人修复我的代码或给我发送另一个代码?请告诉我我真的需要它。感谢首先,您只需要为if语句使用一个bool值,然后就可以在单个boolean上使用if-else。目前,他们正在新闻发布会和新闻发布会上切换两个不同的布尔值,但都不是同时切换的 另一个问题是lerp的使用,特别是最后一个参数。基本上,您将永远无法达到目标缩放视野,因为您的计算永远不会导致1 为了顺利过渡,您应该存储一个浮点值作为lerp值
float lerp = 0f;
void Update()
{
if (Input.GetKeyDown(KeyCode.LeftShift))
{
isZoomed = !isZoomed;
}
if (isZoomed)
{
lerp = Mathf.Max( Time.deltaTime * smooth + lerp, 1f);
GetComponent<Camera>().fieldOfView = Mathf.Lerp(normal, zoom, lerp);
} else {
lerp = Mathf.Min( Time.deltaTime * smooth - lerp 1f);
GetComponent<Camera>().fieldOfView = Mathf.Lerp(normal, zoom, lerp);
}
if (Input.GetKeyUp(KeyCode.LeftShift))
{
isZoomed = !isZoomed;
}
float-lerp=0f;
无效更新()
{
if(Input.GetKeyDown(KeyCode.LeftShift))
{
IsZomed=!IsZomed;
}
如果(放大)
{
lerp=Mathf.Max(Time.deltaTime*平滑+lerp,1f);
GetComponent().fieldOfView=Mathf.Lerp(正常、缩放、Lerp);
}否则{
lerp=Mathf.Min(Time.deltaTime*平滑-lerp 1f);
GetComponent().fieldOfView=Mathf.Lerp(正常、缩放、Lerp);
}
if(Input.GetKeyUp(KeyCode.LeftShift))
{
IsZomed=!IsZomed;
}
}不,我们无法修复您的代码。您需要告诉我们错误是什么。“到处都是虫子”并没有真正的帮助。你调试过了吗?