标签:moveAmount 视角 鼠标 Unity camFollowPos Time Input 移动 edgeSize
效果类似RTS游戏中鼠标在屏幕边缘移动视角
在场景中任意添加一个参照物即可
1.首先是2D场景
新建空物体并搭载脚本CamMove
public class CamMove : MonoBehaviour
{
public float edgeSize; //会产生移动效果的边缘宽度
public float moveAmount; //移动速度
public Camera myCamera; //会移动的摄像机
private Vector3 camFollowPos; //用于给摄像机赋值
private bool edgeScrolling = true; //移动开关
// Start is called before the first frame update
void Start()
{
camFollowPos = myCamera.transform.position; //保存摄像机初始位置,移动是在初始位置的基础上计算
}
void Update()
{
if (Input.GetKeyDown(KeyCode.Space)) //移动开关
{
edgeScrolling = !edgeScrolling;
}
if (edgeScrolling) //如果打开
{
//屏幕左下角为坐标(0, 0)
if (Input.mousePosition.x > Screen.width - edgeSize)//如果鼠标位置在右侧
{
camFollowPos.x += moveAmount * Time.deltaTime;//就向右移动
}
if (Input.mousePosition.x < edgeSize)
{
camFollowPos.x -= moveAmount * Time.deltaTime;
}
if (Input.mousePosition.y > Screen.height - edgeSize)
{
camFollowPos.y += moveAmount * Time.deltaTime;
}
if (Input.mousePosition.y < edgeSize)
{
camFollowPos.y -= moveAmount * Time.deltaTime;
}
myCamera.transform.position = camFollowPos;//刷新摄像机位置
}
}
}
这样鼠标移动到屏幕边缘时摄像头就会移动
2.然后是3D场景
将脚本中会变化的camFollowPos.y改为camFollowPos.z即可
public class CamMove : MonoBehaviour
{
......
if (Input.mousePosition.y > Screen.height - edgeSize)
{
camFollowPos.z += moveAmount * Time.deltaTime;
}
if (Input.mousePosition.y < edgeSize)
{
camFollowPos.z -= moveAmount * Time.deltaTime;
}
}
}
}
标签:moveAmount,视角,鼠标,Unity,camFollowPos,Time,Input,移动,edgeSize 来源: https://www.cnblogs.com/AlphaIcarus/p/16116716.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。