素人がUnityでブロック崩し作ってみた - ③
一応できた
あれからまた少し触ったり調べたところ衝撃の事実が判明。
ひとつ前の記事で、三角関数入れたりして大変だった。説いた内容を書いたんだけど、
そもそもUnityの基本機能で跳ねたり、跳ね返ったりが可能でした。笑
Rigidbodyを設定して、Physic Materialで以下のように設定
・Dynamic Friction = 0 ※ 移動しているときにかかる摩擦(動摩擦)
・Static Friction = 0 ※ 静止しているときにかかる摩擦(静止摩擦)
・Bounciness = 1 ※ 弾力
・Friction CombineをMinimumに。※ 摩擦のを組合方法 = 2つのオブジェクトの係数の小さい方を選択
・Bounce CombineをMaximumに。 ※ バウンドの組合方法 = 2つのオブジェクトの係数の大きい方を選択
これで、抵抗や摩擦が限りなく低い状態でバウンドする設定に可能。
ただし、これでも速度はだんだん落ちてくるので、速度を維持するためのソースのみ、
BallのScriptにかく。
※以下はべた書きした場合のソースコードです
Vector3 V = transform.GetComponent<Rigidbody>().velocity; // 速度を取得.
if (V.x < 0.0f)
{
V.x = -1 * speed;
}
else{
V.x = speed;
}
if (V.y < 0.0f)
{
V.y = -1 * speed;
}
else{
V.y = speed;
}
こうすることで、跳ね返るようになります。
あとは、ステージをかこっている下のオブジェクトにボールが当たった場合のみボールを消すスクリプトを書きます。
if (obj.gameObject.name == "BottomWall")
{
GameObject.Destroy(this.gameObject);
}
そんなこんなでこうなりました
ちょっと無理やりガーっと作った感じがあるので、
追加要素加えるときに少しソース直したりしてみたいとおもいます。
ブロックに当たるとバーがみじかくなったり、ボールが早くなったり、色によって壊れる回数が異なるようにブロックを変えてみたり。
素材そのものを変えてみたりとかいろいろいじくってみようと思います。
ではではノシ