###前提・実現したいこと
主人公をキャラクターコントローラーで操作するゲームを作っております。
ソリの上に主人公が乗ったら坂を滑らせたい
###発生している問題・エラーメッセージ
ソリは震えるだけで、前に進みません。
ソリには落下防止用に、コライダーを付けております。
ソリに乗り続けて時間が立つと、斜めになってソリは空に飛んでいってしまいます。
主人公は、ソリから落ちます。
###該当のソースコード
【C#で作っております】
using System.Collections; using System.Collections.Generic; using UnityEngine; public class SoriLog : MonoBehaviour { [Header("移動関係")] public int gravity; //重力強化 public int front; //前に進むスピード Rigidbody rb; //物理属性 public float t; //タイマー public GameObject refObj1; //読み込むオブジェクト1 public GameObject refObj2; //読み込むオブジェクト2 // Use this for initialization void Start () { rb = GetComponent<Rigidbody>(); t = 0; } // Update is called once per frame void Update () { rb.AddForce(Vector3.down * gravity); } void OnTriggerEnter(Collider Collider) { //プレイヤーが触れたらカウンターリセット if (Collider.gameObject.tag == "Player") { t = 0; Debug.Log("tri"); } } void OnTriggerStay(Collider Collider) { //プレイヤーが触れたら if (Collider.gameObject.tag == "Player") { t += Time.deltaTime; //ソリの上に2秒以上乗っていたら if (t > 2f) { transform.position += transform.forward * front * Time.deltaTime; //rb.AddForce(Vector3.forward * front); Debug.Log("ON"); } //ソリの上に1秒いたら if (t > 1f) { refObj1.GetComponent<BoxCollider>().enabled = true; refObj2.GetComponent<BoxCollider>().enabled = true; Debug.Log("VON"); } } } void OnTriggerExit(Collider Collider) { //プレイヤーが離れたら if (Collider.gameObject.tag == "Player") { t += Time.deltaTime; //ソリの上に2秒以上乗っていたら動きは止まる if (t > 2f) { transform.position += transform.forward * 0 * Time.deltaTime; //rb.AddForce(Vector3.forward * front); Debug.Log("Off"); } //ソリの上に1秒いたら if (t > 1f) { refObj1.GetComponent<BoxCollider>().enabled = false; refObj2.GetComponent<BoxCollider>().enabled = false; Debug.Log("VOff"); } } } }
###試したこと
【1】
ソリのコライダーに抵抗が殆ど無いPhysic Materialを付け、AddForceで動かそうとしましたが、思うような動きにはならなかった。(ほとんど動かない)
【2】
AddForceで前に進む力をむちゃくちゃあげて、落下防止用に、後ろに大きい壁型のコライダーをつけて動かす。ソリが、ガタガタ震えるだけで、前には進まない。
【3】
ソリの前にもコライダーをつけて、主人公が前に動けばと思ったがこれも動かない
【4】
Rigidbodyを使うのをうやめて、キャラクターコントローラーにしたところ、ソリっぽい動きにはなったが、主人公の事を無視して遠くまで飛んでいってしまった。
【5】
すり抜け防止に主人公の後ろにでかい壁型のコライダーを設置した所、前に進まずガタガタ震えて動かない。
###補足情報(言語/FW/ツール等のバージョンなど)
【制作環境】
Unity5.6.1f1 personal
win10
MicrosoftVisualStudio
【ソリに割り当てているコンポーネント】
Rigidbody
BoxCollider
CharacterController
ソリのプログラム
【主人公に割り当てているコンポーネント】
CharacterController
CapsuleCollider
オーディオソース
その他プログラム
自分で分かる範囲の部分は書いていますが、説明不足だったら申し訳ありません。
また、主人公がCharacterControllerを使う以外は、全部変更してもいいです。
ですので、このやり方でないと絶対ダメというわけではありません。
いつも回答者様には感謝しております。
また、フォローさせていただいている方は皆様優秀なので、質問しているレベルが高すぎて全然お返しできず誠に申し訳なく思います。
いつか自分のプログラム知識が高まって何らかの形で貢献できれば幸いです。
よろしくお願い致します。
回答1件
あなたの回答
tips
プレビュー