怎么让cinemachine在一定范围内随鼠标触碰边界移动
您可以使用以下步骤来实现此目标:
-
在场景中创建一个空对象,命名为“CameraBounds”。
-
将一个Box Collider组件添加到“CameraBounds”对象上,并将其大小调整为您想要限制相机移动的范围。
-
在Cinemachine虚拟相机对象上添加一个CinemachineConfiner组件。
-
将“CameraBounds”对象拖放到CinemachineConfiner组件的“Bounding Shape”字段中。
-
在Cinemachine虚拟相机对象上添加一个CinemachineComposer组件。
-
在CinemachineComposer组件的“Tracked Object”字段中选择要跟踪的对象(例如玩家角色)。
-
在CinemachineComposer组件的“Screen X”和“Screen Y”字段中设置相机的初始位置。
-
在CinemachineComposer组件的“Dead Zone Width”和“Dead Zone Height”字段中设置相机在移动之前必须越过的边界宽度和高度。
-
创建一个名为“CameraInput”的C#脚本,并将其附加到Cinemachine虚拟相机对象上。
-
在“CameraInput”脚本中编写以下代码:
using UnityEngine;
using Cinemachine;
public class CameraInput : MonoBehaviour
{
public float boundarySize = 0.1f;
public float moveSpeed = 5f;
private CinemachineComposer composer;
private Transform cameraTransform;
private void Start()
{
composer = GetComponent<CinemachineComposer>();
cameraTransform = Camera.main.transform;
}
private void Update()
{
Vector3 mousePosition = Input.mousePosition;
Vector3 cameraPosition = cameraTransform.position;
float xBoundary = Screen.width * boundarySize;
float yBoundary = Screen.height * boundarySize;
if (mousePosition.x < xBoundary && cameraPosition.x > composer.m_ScreenX - composer.m_DeadZoneWidth)
{
cameraTransform.Translate(Vector3.left * moveSpeed * Time.deltaTime);
}
else if (mousePosition.x > Screen.width - xBoundary && cameraPosition.x < composer.m_ScreenX + composer.m_DeadZoneWidth)
{
cameraTransform.Translate(Vector3.right * moveSpeed * Time.deltaTime);
}
if (mousePosition.y < yBoundary && cameraPosition.y > composer.m_ScreenY - composer.m_DeadZoneHeight)
{
cameraTransform.Translate(Vector3.down * moveSpeed * Time.deltaTime);
}
else if (mousePosition.y > Screen.height - yBoundary && cameraPosition.y < composer.m_ScreenY + composer.m_DeadZoneHeight)
{
cameraTransform.Translate(Vector3.up * moveSpeed * Time.deltaTime);
}
}
}
-
在“CameraInput”脚本中,您可以调整“boundarySize”和“moveSpeed”变量的值来控制边界大小和相机移动速度。
-
运行游戏并测试相机移动。现在,当鼠标接近屏幕边缘时,相机将在限制范围内移动。
原文地址: https://www.cveoy.top/t/topic/b4p7 著作权归作者所有。请勿转载和采集!