前提・実現したいこと
「ボタンを押している間、ボールを浮かせる。ボタンが離れたら、ボールを着地させる。」というスクリプトを書いて実装したい。
発生している問題・エラーメッセージ
「ボタンを押している間、ボールを浮かせる」ところは特に問題がありません。ただ、長い時間浮かせた後の着地でなぜかボールが地面をすり抜けてしまいます。
該当のソースコード
地面としてPlane、ボールとしてSphereを設置しています。なお、スフィアの方にスクリプトを付けています。
PlaneもSphereもどっちにもRigidbodyを付けています。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Jikken2 : MonoBehaviour
{
public GameObject cam;//カメラを代入
void Update() { //ボールを浮かせる if (Input.GetKey(KeyCode.UpArrow)) { Vector3 p = transform.position; p.y = 1f; transform.position = p; } //カメラをボールの後ろに配置 if (cam.transform.position.x > 0) { Vector3 t = transform.position; t.y += 4; t.z -= 5; cam.transform.position = t; } Debug.Log("ボール" + transform.position); }
}
試したこと
Rigidbody付のオブジェクトをtransform.positionで動かすのはあまり一般的ではないと聞いたので、rigidbody.positionで動かしてみましたが、それでもうまくいきませんでした。(じわじわとボールが地面にめり込んでしまいます。)
なぜなのかとても不思議です。回答よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー