質問編集履歴

4 タイトルでイメージが湧きにくかったので修正しました。

jum6948

jum6948 score 18

2017/11/21 10:53  投稿

Unityでソリを作りたい
【Unity】 Addforceで動く物(Z軸)にCharacterControllerで動くキャラを乗せて動かしたい
###前提・実現したいこと
主人公をキャラクターコントローラーで操作するゲームを作っております。
ソリの上に主人公が乗ったら坂を滑らせたい
###発生している問題・エラーメッセージ
ソリは震えるだけで、前に進みません。
ソリには落下防止用に、コライダーを付けております。
ソリに乗り続けて時間が立つと、斜めになってソリは空に飛んでいってしまいます。
主人公は、ソリから落ちます。
###該当のソースコード
【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
【ソリに割り当てているコンポーネント】
![イメージ説明](40ce3f9ba17e8692111bfbdd474f9612.png)
Rigidbody
BoxCollider
CharacterController
ソリのプログラム
【主人公に割り当てているコンポーネント】
![イメージ説明](207f44e7e5d060677cff8722e1f00efb.png)
CharacterController
CapsuleCollider
オーディオソース
その他プログラム
自分で分かる範囲の部分は書いていますが、説明不足だったら申し訳ありません。
また、主人公がCharacterControllerを使う以外は、全部変更してもいいです。
ですので、このやり方でないと絶対ダメというわけではありません。
いつも回答者様には感謝しております。
また、フォローさせていただいている方は皆様優秀なので、質問しているレベルが高すぎて全然お返しできず誠に申し訳なく思います。
いつか自分のプログラム知識が高まって何らかの形で貢献できれば幸いです。
よろしくお願い致します。
  • C#

    11003 questions

    C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

  • Unity3D

    2443 questions

    Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

3 画像を追加、表記を修正しました。

jum6948

jum6948 score 18

2017/11/17 11:56  投稿

Unityでソリを作りたい
###前提・実現したいこと
主人公をキャラクターコントローラーで操作するゲームを作っております。
ソリの上に主人公が乗ったら坂を滑らせたい
###発生している問題・エラーメッセージ
ソリは震えるだけで、前に進みません。
ソリには落下防止用に、コライダーを付けております。
ソリに乗り続けて時間が立つと、斜めになってソリは空に飛んでいってしまいます。
主人公は、ソリから落ちます。
###該当のソースコード
【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
【ソリに割り当てているコンポーネント】
![イメージ説明](40ce3f9ba17e8692111bfbdd474f9612.png)  
Rigidbody
BoxCollider
CharacterController
ソリのプログラム
【主人公に割り当てているコンポーネント】
![イメージ説明](207f44e7e5d060677cff8722e1f00efb.png)  
CharacterController
CapsuleCollider
オーディオソース
その他プログラム
自分で分かる範囲の部分は書いていますが、説明不足だったら申し訳ありません。
また、主人公がCharacterControllerを使う以外は、全部変更してもいいです。
ですので、このやり方でないと絶対ダメというわけではありません。
いつも回答者様には感謝しております。
また、フォローさせていただいている方は皆様優秀なので、質問しているレベルが高すぎて全然お返しできず誠に申し訳なく思います。
いつか自分のプログラム知識が高まって何らかの形で貢献できれば幸いです。
よろしくお願い致します。
  • C#

    11003 questions

    C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

  • Unity3D

    2443 questions

    Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

2 ```ここに言語を入力を追加

jum6948

jum6948 score 18

2017/11/17 11:31  投稿

Unityでソリを作りたい
###前提・実現したいこと
主人公をキャラクターコントローラーで操作するゲームを作っております。
ソリの上に主人公が乗ったら坂を滑らせたい
###発生している問題・エラーメッセージ
ソリは震えるだけで、前に進みません。
ソリには落下防止用に、コライダーを付けております。
ソリに乗り続けて時間が立つと、斜めになってソリは空に飛んでいってしまいます。
主人公は、ソリから落ちます。
###該当のソースコード
【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を使う以外は、全部変更してもいいです。
ですので、このやり方でないと絶対ダメというわけではありません。
いつも回答者様には感謝しております。
また、フォローさせていただいている方は皆様優秀なので、質問しているレベルが高すぎて全然お返しできず誠に申し訳なく思います。
いつか自分のプログラム知識が高まって何らかの形で貢献できれば幸いです。
よろしくお願い致します。
  • C#

    11003 questions

    C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

  • Unity3D

    2443 questions

    Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

1 まずは、コードを`で囲む

jum6948

jum6948 score 18

2017/11/17 11:28  投稿

Unityでソリを作りたい
###前提・実現したいこと
主人公をキャラクターコントローラーで操作するゲームを作っております。
ソリの上に主人公が乗ったら坂を滑らせたい
###発生している問題・エラーメッセージ
ソリは震えるだけで、前に進みません。
ソリには落下防止用に、コライダーを付けております。
ソリに乗り続けて時間が立つと、斜めになってソリは空に飛んでいってしまいます。
主人公は、ソリから落ちます。
###該当のソースコード
【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を使う以外は、全部変更してもいいです。
ですので、このやり方でないと絶対ダメというわけではありません。
いつも回答者様には感謝しております。
また、フォローさせていただいている方は皆様優秀なので、質問しているレベルが高すぎて全然お返しできず誠に申し訳なく思います。
いつか自分のプログラム知識が高まって何らかの形で貢献できれば幸いです。
よろしくお願い致します。
  • C#

    11003 questions

    C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

  • Unity3D

    2443 questions

    Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る