如何一起移动对象堆栈和堆栈破坏器?

时间:2019-04-28 21:38:30

标签: c# unity3d

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移动将所有多维数据集分组的对象来移动堆栈。但是,由于许多多维数据集相互碰撞或移动很快,因此无法正常工作。当小方块滑开时,有什么建议让堆栈和驱逐舰顺畅移动?

0 个答案:

没有答案