今回、unityちゃん2Dのソースを見ていたところ、わからないところがあったので質問させていただきます。
using System.Collections.Generic;
using System.Linq;
using UnityEngine;
public class BrokenBlockController : MonoBehaviour
{
public AudioClip breakClip;
public Vector2 force = new Vector2(250, 1000);
private Rigidbody2D[] rigidbody2Ds;
private Transform[] transforms;
void Awake()
{
rigidbody2Ds = GetComponentsInChildren<Rigidbody2D>();
}
void Start()
{
IEnumerable<IGrouping<float, Rigidbody2D>> groupBy = rigidbody2Ds.GroupBy(r => r.transform.localPosition.y);
foreach (IGrouping<float, Rigidbody2D> grouping in groupBy)
{
foreach (var r in grouping)
{
r.AddForce(new Vector2(Mathf.Sign(r.transform.localPosition.x) * force.x, force.y + (100 * grouping.Key)));
}
}
AudioSourceController.instance.PlayOneShot(breakClip);
Destroy(gameObject, 3);
}
}
SPACEでジャンプ、矢印キーで移動
ブロック破壊のサンプル
上のゲームはもともと、unityちゃん2Dについていたサンプルなのですが、ブロックに触れたときにプレハブの破壊ブロックのオブジェクトが生成され、
破壊オブジェクトについている上のソースが実行されます。
破壊オブジェのプレハブには、空のオブジェクトの中に4つに分散されたブロックの画像が入っていて、4つ全てにrigidbody2Dがついています。
わからないところは20~28行までの処理で、なぜ、このような処理になるのか検討もつかない状態です。
なぜ、このような処理になるのかわかりやすく教えていただけないでしょうか?
よろしくお願いします。