Можно ли сделать плавное передвижение заднего фона за мышкой?
В середине скорость фона была например 10, а ближе к границам плавно уменьшалась...
Я сделал мудрёную систему векторов, но она дергается, лагает и т.д.
Синтаксис:
Используется csharp
public class bgmenu : MonoBehaviour {
public Vector2 mouse;
public GameObject bgobj;
public Vector2 mstart;
public bool u;
public bool d;
public bool l;
public bool r;
public float bgx;
public float bgy;
public bool use;
public Vector2 bgs;
public float bgsx;
public float bgsy;
void Start ()
{
bgs = bgobj.transform.position;
u = false;
d = false;
l = false;
r = false;
mstart = Input.mousePosition;
bgsx = bgs.x;
bgsy = bgs.y;
mstart.x = Screen.width / 2;
mstart.y = Screen.height / 2;
}
void Update ()
{
mstart.x = Screen.width / 2;
mstart.y = Screen.height / 2;
bgx = bgobj.transform.position.x;
bgy = bgobj.transform.position.y;
mouse = Input.mousePosition;
if (mouse.x > mstart.x) {
r = true;
l = false;
if (mouse.y > mstart.y) {
u = true;
d = false;
}
if (mouse.y < mstart.y) {
d = true;
u = false;
}
}
//5 and 211,697
if (bgx < 5.04f) {
if (bgx > 4.947f) {
if (r == true) {
bgobj.transform.Translate (new Vector3 (+0.0001f, 0, 0));
if (u == true) {
bgobj.transform.Translate (new Vector3 (0, +0.0001f, 0));
}
if (d == true) {
bgobj.transform.Translate (new Vector3 (0, -0.0001f, 0));
}
}
}
}
//5 and 211,697
if (bgy < 211.840f) {
if (bgy > 211.443f) {
if (l == true) {
bgobj.transform.Translate (new Vector3 (-0.0001f, 0, 0));
if (u == true) {
bgobj.transform.Translate (new Vector3 (0, +0.0001f, 0));
}
if (d == true) {
bgobj.transform.Translate (new Vector3 (0, -0.0001f, 0));
}
}
}
}
//5 and 211.697
//5.04 and 211.840
//4.95 and 211.434
if (r == true) {
if (d != true) {
if (bgx > 5.037f) {
bgobj.transform.Translate (new Vector3 (-0.0001f, 0, 0));
}
}
}
if (l == true) {
if (bgx < 4.9945f) {
bgobj.transform.Translate (new Vector3 (+0.0001f, 0, 0));
}
}
if (d == true) {
if (r != true) {
if (bgy > 211.837f) {
bgobj.transform.Translate (new Vector3 (0, -0.0001f, 0));
}
}
}
if (u == true) {
if (l != true) {
if (bgy < 211.442f) {
bgobj.transform.Translate (new Vector3 (0, +0.0001f, 0));
}
}
}
//5 and 211,697
if (mouse.x < mstart.x) {
l = true;
r = false;
if (mouse.y > mstart.y) {
u = true;
d = false;
}
if (mouse.y < mstart.y) {
d = true;
u = false;
}
}
if (bgx == bgsx) {
if (bgy == bgsy) {
use = true;
}
}
if (bgy < 211.442f) {
bgobj.transform.Translate (0, +0.0001f, 0);
}
if (bgy > 211.843f) {
bgobj.transform.Translate (0, -0.0001f, 0);
}
}
}
public Vector2 mouse;
public GameObject bgobj;
public Vector2 mstart;
public bool u;
public bool d;
public bool l;
public bool r;
public float bgx;
public float bgy;
public bool use;
public Vector2 bgs;
public float bgsx;
public float bgsy;
void Start ()
{
bgs = bgobj.transform.position;
u = false;
d = false;
l = false;
r = false;
mstart = Input.mousePosition;
bgsx = bgs.x;
bgsy = bgs.y;
mstart.x = Screen.width / 2;
mstart.y = Screen.height / 2;
}
void Update ()
{
mstart.x = Screen.width / 2;
mstart.y = Screen.height / 2;
bgx = bgobj.transform.position.x;
bgy = bgobj.transform.position.y;
mouse = Input.mousePosition;
if (mouse.x > mstart.x) {
r = true;
l = false;
if (mouse.y > mstart.y) {
u = true;
d = false;
}
if (mouse.y < mstart.y) {
d = true;
u = false;
}
}
//5 and 211,697
if (bgx < 5.04f) {
if (bgx > 4.947f) {
if (r == true) {
bgobj.transform.Translate (new Vector3 (+0.0001f, 0, 0));
if (u == true) {
bgobj.transform.Translate (new Vector3 (0, +0.0001f, 0));
}
if (d == true) {
bgobj.transform.Translate (new Vector3 (0, -0.0001f, 0));
}
}
}
}
//5 and 211,697
if (bgy < 211.840f) {
if (bgy > 211.443f) {
if (l == true) {
bgobj.transform.Translate (new Vector3 (-0.0001f, 0, 0));
if (u == true) {
bgobj.transform.Translate (new Vector3 (0, +0.0001f, 0));
}
if (d == true) {
bgobj.transform.Translate (new Vector3 (0, -0.0001f, 0));
}
}
}
}
//5 and 211.697
//5.04 and 211.840
//4.95 and 211.434
if (r == true) {
if (d != true) {
if (bgx > 5.037f) {
bgobj.transform.Translate (new Vector3 (-0.0001f, 0, 0));
}
}
}
if (l == true) {
if (bgx < 4.9945f) {
bgobj.transform.Translate (new Vector3 (+0.0001f, 0, 0));
}
}
if (d == true) {
if (r != true) {
if (bgy > 211.837f) {
bgobj.transform.Translate (new Vector3 (0, -0.0001f, 0));
}
}
}
if (u == true) {
if (l != true) {
if (bgy < 211.442f) {
bgobj.transform.Translate (new Vector3 (0, +0.0001f, 0));
}
}
}
//5 and 211,697
if (mouse.x < mstart.x) {
l = true;
r = false;
if (mouse.y > mstart.y) {
u = true;
d = false;
}
if (mouse.y < mstart.y) {
d = true;
u = false;
}
}
if (bgx == bgsx) {
if (bgy == bgsy) {
use = true;
}
}
if (bgy < 211.442f) {
bgobj.transform.Translate (0, +0.0001f, 0);
}
if (bgy > 211.843f) {
bgobj.transform.Translate (0, -0.0001f, 0);
}
}
}
она определяет в какой стороне мышка от центра, и двигает картинку векторами.
Если выходит за границы, запускает вектор, который отнимает такое же число, что и прибавляется.