此文将以UGUI 为例,利用鼠标滑动控制Image滑动
首先在Unity中创建一个Image,给Image添加脚本
脚本如下:
public float Hspeed = 2.0f;
public float Vspeed = 2.0f;
void Update () {
//调用函数
function();
}
public void function ()
{
//获取Image相对于画布的位置
Vector3 postion = this.transform.localPosition;
//300 和 75分别为Image至画布四端的位置坐标,目的让Image在画布内滑动
if (postion.x>=-300&&postion.x<=300&&postion.y<=75&&postion.y>=-75)
{
//Input.GetAxis获取虚拟轴,返回-1至1 之间的值,两参数分别表示鼠标横向与纵向滑动
float h = Hspeed * Input.GetAxis("Mouse X");
float v = Vspeed * Input.GetAxis("Mouse Y");
//此处正常参数代码应为(h,v,0),让Image随鼠标滑动值移动,因为博主创建的Image 在z轴方向旋转了90度,所以采用以下参数
this.transform.Translate(v, -h, 0);
}
//控制Image不滑出画布上端脚本
else if (postion.y>=75)
{
float h = Hspeed * Input.GetAxis("Mouse X");
float v = Vspeed * Input.GetAxis("Mouse Y");
if(v>0)
{
this.transform.Translate(0, -h, 0);
}
else
{
this.transform.Translate(v, -h, 0);
}
}
//控制Image不滑出画布下端脚本
else if (postion.y <= -75)
{
float h = Hspeed * Input.GetAxis("Mouse X");
float v = Vspeed * Input.GetAxis("Mouse Y");
if (v > 0)
{
this.transform.Translate(v, -h, 0);
}
else
{
this.transform.Translate(0, -h, 0);
}
}
//控制Image不滑出画布左侧脚本
else if (postion.x <= -300)
{
float h = Hspeed * Input.GetAxis("Mouse X");
float v = Vspeed * Input.GetAxis("Mouse Y");
if (h > 0)
{
this.transform.Translate(v, -h, 0);
}
else
{
this.transform.Translate(v, 0, 0);
}
}
//控制Image不滑出画布右侧脚本
else if (postion.x >= 300)
{
float h = Hspeed * Input.GetAxis("Mouse X");
float v = Vspeed * Input.GetAxis("Mouse Y");
if (h > 0)
{
this.transform.Translate(v, 0, 0);
}
else
{
this.transform.Translate(v, -h, 0);
}
}
}
鼠标滑动控制物体移动
最新推荐文章于 2022-05-12 13:43:13 发布