物体A:战斗单位
物体B:受到其他战斗单位攻击的伤害数值
物体BRoot:用于存放伤害数值,将该物体放到所有物体最下方,这样可以让伤害数值不被遮挡
物体B是物体BRoot的子物体,物体B与物体A的x坐标相同y坐标标大100px。当物体A向右移动时,物体B向上移动移动100px后则自动销毁,在这移动过程中物体A和B的x坐标相同。
using System.Collections;
using UnityEngine;
public class MoveObjects : MonoBehaviour
{
public GameObject objectA; // 物体A
public GameObject objectB; // 物体B
private float initialB_Y; // 物体B的初始Y坐标
private float bMoveDistance = 100f; // 物体B需要移动的距离
private float bMoveSpeed = 30f; //移动的速度
private float aMoveSpeed = 40f; //移动的速度
void Start()
{
StartCoroutine(DestoryB());
}
void Update()
{
}
/// <summary>
/// A物体移动
/// </summary>
void AMove()
{
objectA.transform.localPosition += new Vector3(bMoveSpeed * Time.deltaTime, 0, 0);
}
/// <summary>
/// B物体跟随A移动
/// </summary>
void BFlowA()
{
Vector3 newBLocalPosition = objectB.transform.localPosition;
newBLocalPosition.x = objectA.transform.localPosition.x;
newBLocalPosition.y += aMoveSpeed * Time.deltaTime;
objectB.transform.localPosition = newBLocalPosition;
}
/// <summary>
/// B物体跟随A移动的同时,也往上移动,移动到一定距离自动销毁
/// </summary>
/// <returns></returns>
IEnumerator DestoryB()
{
// 记录物体B的初始Y坐标
initialB_Y = objectB.transform.localPosition.y;
while (objectB.transform.localPosition.y - initialB_Y < bMoveDistance)
{
AMove();
BFlowA();
yield return new WaitForEndOfFrame();
}
Destroy(objectB);
}
}