スマホでできるVRゲームを作りたいと思っています。
カメラが向いている方向に進み、時間経過で速度が上がり、キューブなどにぶつかると速度が低下するようにしたいのですが、キューブなどにぶつかったとき速度の初期化がうまくいきません。
public class moveforward : MonoBehaviour
{
float count = 1;
float MAX = 200;
private float speed;
void Start(){ //3秒後にCall関数を実行し、その後は1秒間隔で実行し続ける InvokeRepeating("Call", 3, 1); } void Update(){ transform.localPosition = transform.localPosition + Camera.main.transform.forward * Time.deltaTime * count; } void Call() { count += 1;
if (count > MAX){
count = MAX;
}
}
void OnTriggerEnter(Collision collision) { if (collision.gameObject.name == "Cube") { transform.localPosition = transform.localPosition + Camera.main.transform.forward * Time.deltaTime ; } }
}
OnTriggerEnterで初期化をしたいと思っています。
よろしくお願いします。
ベクトルはどこまで理解出来ますか?
すみません
わからないです
「初期化」とは一般的に「変数を宣言した時に値(初期値)を代入する」ことを指しますが、異なった用法で使われていて文章の意味が通じなくなっているようです。「初期化」という言葉を実際は何を説明しようとして使っているのか修正した方がよいと思います。
> 時間経過で速度が上がり、キューブなどにぶつかると速度が低下するようにしたいのですが、キューブなどにぶつかったとき速度の初期化がうまくいきません。
なるほど、キューブにぶつかって速度が低下し、その後また加速するようにしたい、ということと理解しました。
それなら、物理エンジンを使えば特に何もしなくてもキューブにぶつかると速度は低下して、その後また加速するので Rigidbody を使ってオブジェクトを操作する方法を調べたり学ぶとよいでしょう。Unity の学習サイトや書籍では大抵その方法でやっていると思います。
ありがとうございます。調べてみます。
オススメのサイト等があれば教えてもらうことは可能ですか?
ベクトルが分かっていないようなので、まずはここからですね。
https://ja.wikibooks.org/wiki/%E9%AB%98%E7%AD%89%E5%AD%A6%E6%A0%A1%E6%95%B0%E5%AD%A6B/%E3%83%99%E3%82%AF%E3%83%88%E3%83%AB
Unityにおける衝突判定をまとめている記事ならこの辺りを読むと良いでしょう。
https://qiita.com/nutti/items/1a284c4bf8c79386aca7
Unityチュートリアル。
http://tutorial.unity3d.jp/
回答1件
あなたの回答
tips
プレビュー