前回の続き!
前回の玉転がしゲームの続きを作っていくよー。今回は玉を実際に転がしてみよう!編です。
物理演算を適用するために、重力を適用する方に「Rigidbody」、重力は適用しないが衝突対象になるものに「Colider」を適用させます。
ちなみに「Collider」はオブジェクトを追加した際に自動的に追加されます。
「Rigidbody」は「Add Component」から追加してあげる必要があります。
適用すれば板の上をボールが転がるように動かすことができます。迷路のステージに関してはCubeを組み合わせて頑張って作りました...
こんな感じで一個のオブジェクトの中に入れてあげれば同じ物体として扱われるため、物体を傾けても大丈夫です。
これで玉を転がす部分は完成なのですが、ちょっと今でも解決できていないバグ(?)があるので共有します。
#問題点
フツーに何も考えずに実行すると以下のようになってしまいます...
おいおい当たり判定全然できてないじゃないか!と言いたいところなのですが、下図のように少し板を動かすとできるようになるんですね
とても謎ですが、もしできた場合は追記などで情報を追加しようと思います...
[2021年6月9日追記]
コメントいただきありがとうございます!colliderがスリープ状態になっていたことが原因だったようですね...
こちらのサイトを参考に実装させていただきます。ここのサイトにあるコードを参考にさせていただきます。
https://ftvoid.com/blog/post/728
追加で以下のコードをボールに適用します。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class wakeupball : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
var body = GameObject.Find ("Sphere").GetComponent<Rigidbody> ();
if (Input.GetKey(KeyCode.UpArrow )) {
body.WakeUp();
}else if (Input.GetKey(KeyCode.DownArrow)){
body.WakeUp();
}else if (Input.GetKey(KeyCode.RightArrow)){
body.WakeUp();
}else if(Input.GetKey(KeyCode.LeftArrow)){
body.WakeUp();
}
}
}
上下左右のキーを押すことでRigidBodyがWakeupし、物理演算を動かせるということですね...
情報をいただいた方ありがとうございました。