1.关于相机
1.相机跟随
第一步:找一个舒服的视角,将相机视野对准视角 (view to algin)
第二步:相机添加脚本
第三步:利用相机与玩家位置的偏移量
offset = transform.position - player_transform.position
第四步:将相机位置设置为玩家位置加上offset
transform.position = player_transform.position + offset
注意点:四步完成可以简单实现相机跟随
第一,遇到死角遮挡。第二,某些时刻滑动会有卡顿,用户体验不好
有以下的解决方式
首先,我们看一张图
- 我们模拟出这么一种情况,玩家走到墙角,如图所示,被墙挡住摄像机,那我们就看不见我们的角色了。
- 我们的解决方案就是,利用摄像机向角色发射射线,再利用角色的垂直方向,得出相机需要运动的方向,同时在运动方向截取3个点,在3个点同时发射射线,判断是不是射线与角色产生碰撞。如果射线并没有与角色碰撞,而是与其他物体碰撞,那么可以判断为,该摄像机位置被遮挡,我们就将摄像机按顺序往后移动。最坏的结果就是摄像机移动角色垂直方向,如图中摄像机2的位置。这样就可以在死角也能够看到角色。
技术要点
1.均匀取射线点,用到以下方法
Vector3.Lerp();
2.发射射线
RayCastHit hitInfo;
if (Physics.RayCast(...,...,out hitInfo)){
//do some thing
}
完成这些后还不够,因为移动相机,会卡顿,体验极其不友好,所以这里需要用到部分插值运算。
以下是缓动代码部分
transform.position = Vector3.Lerp(transform.position, newPos, Time.deltaTime * moveSpeed);
Quaternion oldRotation = transform.rotation;
transform.LookAt(player_transform.position);
transform.rotation = Quaternion.Lerp(oldRotation, transform.rotation, Time.deltaTime * rotateSpeed);
至此,摄像机脚本初步完成,有些地方,根据自己需要自行修改。
网友评论