Unity Tilemap使单个下降时间

时间:2019-02-22 08:47:15

标签: unity3d sprite

问题在于,使用平铺地图时,各个平台都会掉落。当前,当玩家发生冲突时,每个平台都在下降,而不是单个平台都在下降。

使用Tilemap功能,我创建了多个“下降平台”。该层称为下降平台(FP)。第一个平台是在另一个图层上作为重生点创建的。平台2,3和4在FP上。

"Falling Platforms 2,3,4" / All 3 platforms falling together

在该层的检查器中,我添加了RigidBody 2D组件和Composite Collider 2D。 Tilemap Collider 2D已设置为 Composite 使用。

RigidBody 2D最初设置为Kinematic,但是,当Player与对象碰撞时,触发器设置为Dynamic,从而导致块掉落。

Falling platform components

脚本已添加到FP。脚本正在运行,当玩家与平台碰撞时,平台会掉落,但是,脚本正在将其应用于每个平台,而不是在每个平台上设置脚本。

是否可以在每个单独的平台上运行脚本,还是需要为每个单独的平台制作不同的层?我怀疑将2D精灵制作成预制件并放弃Tile Map会更容易。

public class FallingPlatform : MonoBehaviour
{
    Rigidbody2D rb;

    void Start(){
        rb = GetComponent<Rigidbody2D>();
           }

    void OnCollisionEnter2D(Collision2D col){
        if (col.gameObject.name.Equals ("whiteTile")) {

            Invoke("DropPlatform", 0.2f);
            Destroy(gameObject, 2f);
        }
    }

    void DropPlatform(){
        rb.isKinematic = false;
    }

1 个答案:

答案 0 :(得分:0)

好吧,可悲的是您所做的将无法正常工作。 Tilemap是一个gameObject ,因此,使一个tile掉落会使整个东西掉落。过去我所做的就是将要作为独立游戏对象掉落的图块拖出,然后将其掉落逻辑放在上面。

另一种替代方法是,您可以为每个下落的对象使用单独的图块贴图,但此时最好将它们设为游戏中的单独对象。

Here is an example of it used in game.