问题在于,使用平铺地图时,各个平台都会掉落。当前,当玩家发生冲突时,每个平台都在下降,而不是单个平台都在下降。
使用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,从而导致块掉落。
脚本已添加到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;
}
答案 0 :(得分:0)
好吧,可悲的是您所做的将无法正常工作。 Tilemap是一个gameObject ,因此,使一个tile掉落会使整个东西掉落。过去我所做的就是将要作为独立游戏对象掉落的图块拖出,然后将其掉落逻辑放在上面。
另一种替代方法是,您可以为每个下落的对象使用单独的图块贴图,但此时最好将它们设为游戏中的单独对象。