前期工程实现了角色移动,现需要完成镜头的跟随及控制。
一、镜头的跟随
思路很简单,首先取得镜头初始与角色的距离向量值,然后让相机与角色持续保持该向量距离即可。脚本如下:
NameSpace FollowPlayer
private Transform player;
private Vector3 offsetPosition;
void Start( )
{
player = GameOject.FindGameObjectWithTag("player").transform;
offsetPosition = transform.position - player.position;
}
Void Update( )
{
transform.position = player.position + offsetPosition;
}
以上便实现了镜头跟随角色移动的效果。
二、镜头的控制
镜头的控制分解为镜头拉伸和旋转。
2.1 镜头的拉伸
镜头的拉伸本质就是变更镜头于角色间的向量差,在上述脚本生效后,镜头于角色的向量差就是offsetPosition,而且是一个定值,那么现在就是需要把这个定值根据操作进行变化而已。
使用Input.GetAxis("Mouse ScrollWheel")来记录该值。
对上述脚本进行更新为:
NameSpace FollowPlayer
public float scrollspeed = 5;
void SrollView( )
{
float distance = offsetPosition.magnitude; //却得offsetPosition的向量方差
distance += Input.GetAxis("Mouse ScrollWheel"); //根据鼠标中键变更向量方差值
offsetPosition = offsetPosition.normalized * distance; //先将向量变为标准向量,再乘以方差,变成目标距离向量
}
在void Upadate( )中调用就可以了