跟随某个物体(具体哪个轴/或完全跟随)运动详解
//跟随某个物体移动
使用方式:
1.如果勾选x轴就只跟随那个物体的x轴移动
2.如果勾选x和y轴就只跟随那个物体的x和y轴移动
3.如果全勾选就跟随那个物体移动,都不勾选就都不跟随
代码比较简单,就不过多注释,直接使用就好
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class GenSui : MonoBehaviour {
private Transform pos;
[Header("【需要跟随的物体】")]
public Transform Pos;
public float Speed = 20f;
public bool X = false;
public bool Y = false;
public bool Z = false;
// Use this for initialization
void Awake () {
pos = transform;
}
// Update is called once per frame
void Update () {
//只勾选一个轴的
if (X== true && Y == false && Z == false)
{
float x = Mathf.Lerp(pos.position.x, Pos.position.x, Time.deltaTime * Speed);
pos.position = new Vector3(x, pos.position.y, pos.position.z);
}
else if (X == false && Y == true && Z == false)
{
float y = Mathf.Lerp(pos.position.y, Pos.position.y, Time.deltaTime * Speed);
pos.position = new Vector3(pos.position.x, y, pos.position.z);
}
else if (X == false && Y == false && Z == true)
{
float z = Mathf.Lerp(pos.position.z, Pos.position.z, Time.deltaTime * Speed);
pos.position = new Vector3(pos.position.x, pos.position.y, z);
}
//勾选其中两个的
else if(X == true && Y == true && Z == false)
{
float x1 = Mathf.Lerp(pos.position.x, Pos.position.x, Time.deltaTime * Speed);
float y1 = Mathf.Lerp(pos.position.y, Pos.position.y, Time.deltaTime * Speed);
pos.position = new Vector3(x1, y1, pos.position.z);
}
else if (X == true && Y == false && Z == true)
{
float x1 = Mathf.Lerp(pos.position.x, Pos.position.x, Time.deltaTime * Speed);
float z1 = Mathf.Lerp(pos.position.z, Pos.position.z, Time.deltaTime * Speed);
pos.position = new Vector3(x1, pos.position.y, z1);
}
else if (X == false && Y == true && Z == true)
{
float y1 = Mathf.Lerp(pos.position.y, Pos.position.y, Time.deltaTime * Speed);
float z1 = Mathf.Lerp(pos.position.z, Pos.position.z, Time.deltaTime * Speed);
pos.position = new Vector3(pos.position.x, y1, z1);
}
//三个全部勾上
else if (X == true && Y == true && Z == true)
{
float x1 = Mathf.Lerp(pos.position.x, Pos.position.x, Time.deltaTime * Speed);
float y1 = Mathf.Lerp(pos.position.y, Pos.position.y, Time.deltaTime * Speed);
float z1 = Mathf.Lerp(pos.position.z, Pos.position.z, Time.deltaTime * Speed);
pos.position = new Vector3(x1, y1, z1);
}
}
}
如果感觉对您有帮助,麻烦关注一下,谢谢哈