https://i.imgur.com/4GVbIs0.png
嗨。我有一堆多维数据集,并且当多维数据集的破坏者破坏堆栈顶部的第一个多维数据集时,我想将其向上移动。要移动驱逐舰,我使用的是代码
if(transform.position.y <= 6 && transform.position.y >=-6)
{
transform.position += Vector3.down * Time.deltaTime * speed;
}
这在玩家按住按钮时有效,之后驱逐舰必须回到第一位置。除此之外,当驱逐舰成为新职位时,我想将一大堆多维数据集向上移动,他可以将多维数据集破碎成小块。
我正在使用该代码对破立方体。
Vector3 pos = new Vector3(_pos.x, victim.position.y, victim.position.z);
Vector3 victimScale = victim.localScale;
float distance = Vector3.Distance(victim.position, pos);
if (distance >= victimScale.x/2) return false;
Vector3 leftPoint = victim.position - Vector3.right * victimScale.x/2;
Vector3 rightPoint = victim.position + Vector3.right * victimScale.x/2;
Material mat = victim.GetComponent<MeshRenderer>().material;
Destroy(victim.gameObject);
GameObject rightSideObj = GameObject.CreatePrimitive(PrimitiveType.Cube);
rightSideObj.transform.position = (rightPoint + pos) /4;
float rightWidth = Vector3.Distance(pos,rightPoint);
rightSideObj.transform.localScale = new Vector3( rightWidth ,victimScale.y ,victimScale.z );
rightSideObj.AddComponent<Rigidbody>();
rightSideObj.GetComponent<MeshRenderer>().material = mat;
GameObject leftSideObj = GameObject.CreatePrimitive(PrimitiveType.Cube);
leftSideObj.transform.position = (leftPoint + pos)/4;
float leftWidth = Vector3.Distance(pos,leftPoint);
leftSideObj.transform.localScale = new Vector3( leftWidth ,victimScale.y ,victimScale.z );
leftSideObj.AddComponent<Rigidbody>();
leftSideObj.GetComponent<MeshRenderer>().material = mat;
构成堆栈的所有多维数据集都分组在一个空对象中。要滑动小立方体(向左和向右),我正在使用addforce。我只是尝试通过使用tranform.Translate移动将所有多维数据集分组的对象来移动堆栈。但是,由于许多多维数据集相互碰撞或移动很快,因此无法正常工作。当小方块滑开时,有什么建议让堆栈和驱逐舰顺畅移动?