C# 使用Unity中的脚本重置相机时出现的问题
我想将相机放在物体的中心,然后,如果玩家点击按钮(稍后会添加),或者点击物体触发的弹出窗口外(相机移动只是第一步) 我的想法是存储相机的第一个位置,如果鼠标在任何可单击的对象之外单击,但看起来好像它不工作,则再次将其变换回来C# 使用Unity中的脚本重置相机时出现的问题,c#,unity3d,C#,Unity3d,我想将相机放在物体的中心,然后,如果玩家点击按钮(稍后会添加),或者点击物体触发的弹出窗口外(相机移动只是第一步) 我的想法是存储相机的第一个位置,如果鼠标在任何可单击的对象之外单击,但看起来好像它不工作,则再次将其变换回来 void Update() { Vector3 camoriginposition; if (Input.GetMouseButtonDown(0)) { Camera cam = Camera.main; camor
void Update()
{
Vector3 camoriginposition;
if (Input.GetMouseButtonDown(0))
{
Camera cam = Camera.main;
camoriginposition = Camera.main.transform.position;
RaycastHit hit;
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
if (Physics.Raycast(ray, out hit))
{
Rigidbody rb;
if (rb = hit.transform.GetComponent<Rigidbody>())
{
Vector3 obj = rb.transform.position - new Vector3(0, -3, 2);
cam.transform.position = obj;
Debug.Log("curr cam pos" + cam.transform.position);
}
else
{
cam.transform.position = camoriginposition;
Debug.Log("It triggers!");
}
}
}
}
void Update()
{
矢量3坐标原点位置;
if(Input.GetMouseButtonDown(0))
{
Camera cam=Camera.main;
camoriginposition=Camera.main.transform.position;
雷卡斯特击中;
Ray-Ray=Camera.main.screenpointoray(输入.鼠标位置);
如果(物理.光线投射(光线,出击))
{
刚体rb;
if(rb=hit.transform.GetComponent())
{
Vector3 obj=rb.transform.position-新的Vector3(0,-3,2);
cam.transform.position=obj;
调试日志(“当前凸轮位置”+凸轮变换位置);
}
其他的
{
cam.transform.position=camoriginposition;
Log(“它触发了!”);
}
}
}
}
我收到Debug.Log输出,但看起来无法处理transform.position
你知道如何修复它吗?我不知道你说的“不工作”是什么意思,但可能是因为你在每次
更新()
时都声明camoriginposition
,这肯定不是你想要的行为。每当您试图将cam的原点位置存储到本地变量时,当Update()
范围结束时,它将消失,并将使用newUpdate()
调用再次初始化
您必须将camoriginposition
与Update()
分开,例如:
private Vector3 camoriginposition;
无效更新()
{
if(Input.GetMouseButtonDown(0))
{
...
}
而且,似乎还有另一个问题。每次鼠标单击时,您都在存储camoriginposition
,但根据您的描述,它似乎应该在光线实际击中游戏对象时存储
您应该移动camoriginposition=Camera.main.transform.position;
进入
if(rb=hit.transform.GetComponent())
block