纳金网
标题:
摄像机移动 像红警、lol一样鼠标触碰到屏幕边缘自动移动
[打印本页]
作者:
刀锋狼
时间:
2015-7-31 01:05
标题:
摄像机移动 像红警、lol一样鼠标触碰到屏幕边缘自动移动
首先 在场景内创建一个空的Gameobject。将摄像机放到Gameobject下;
脚本加给 Gameobject;
private float speed = 100;//摄像机移动速度
//水平和垂直移动速度
private float horizontalMoveSpeed = 0.5f;
private float verticalMoveSpeed = 0.5f;
//屏幕上下左右标记
private int topTag=8;
private int leftTag=4;
private int rightTag=1;
private int bottonTag=2;
void Update () {
Vector3 mousePos = Input .mousePosition;//获的当前鼠标坐标
//边界最小值
float widthBorder = Screen.width / 50;
float heightBorder = Screen.width / 50;
float x = 0f;
float y = 0f;
//当前鼠标位置标记
int posTag = 0;
if (widthBorder <= mousePos.x && mousePos.x <= Screen.width - widthBorder &&
heightBorder <= mousePos.y && mousePos.y <= Screen.height - heightBorder) {
transform .Translate (x, 0, y);
} else {
if (mousePos.y > Screen.height - heightBorder)
posTag = posTag | topTag;
if (mousePos.x < widthBorder)
posTag = posTag | leftTag;
if (mousePos.y < heightBorder)
posTag = posTag | bottonTag;
if (mousePos.x > Screen.width - widthBorder)
posTag = posTag | rightTag;
// 判断当前状态
switch (posTag) {
case 0:
break;
case 1:
x = horizontalMoveSpeed;
break;
case 2:
y = -verticalMoveSpeed;
break;
case 3:
x = horizontalMoveSpeed;
y = -verticalMoveSpeed;
break;
case 4:
x = -horizontalMoveSpeed;
break;
case 6:
x = -horizontalMoveSpeed;
y = -verticalMoveSpeed;
break;
case 8:
y = verticalMoveSpeed;
break;
case 9:
x = horizontalMoveSpeed;
y = verticalMoveSpeed;
break;
case 12:
x = -horizontalMoveSpeed;
y = verticalMoveSpeed;
break;
default:
break;
}
x *= speed * Time.deltaTime;
y *= speed * Time.deltaTime;
transform.Translate (x,0, y);
}
}
复制代码
作者:
龙_521
时间:
2016-5-23 14:24
点赞点赞点
欢迎光临 纳金网 (http://go.narkii.com/club/)
Powered by Discuz! X2.5