質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C#

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

Unity3D

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

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Q&A

解決済

2回答

5939閲覧

Unity3D 手榴弾(仮)を投げるときに弾道予測線を表示させたい

kosho206

総合スコア41

C#

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

Unity3D

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

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

0グッド

0クリップ

投稿2020/04/12 06:57

左クリックを押している間弾道予測線を表示させて、左クリックを離した瞬間に弾が飛んでいくようにしたいです。
ここでいう”弾”とは、手榴弾のような飛び方とします。
弾を飛ばすスクリプトは簡単に作れました。
具体的には
1.プレイヤーキャラクターに、左クリックを離した瞬間に弾を生成するスクリプトを割り当てる
2.弾側のオブジェクトのStart関数内でRigidbody.AddForceを書き、弾が生成された瞬間に弾が飛ぶ力を加えるようにする
この方法で弾を飛ばせるようにはなりました。

問題は弾道予測線です。
予測線を表示するために、ググって出てきた以下のスクリプトを使わせてもらおうことにしました。

using System.Collections; using System.Collections.Generic; using UnityEngine; namespace CSharpScript { public class UnkoDandou : MonoBehaviour { public GameObject preLineRenderer; public GameObject preBullet; private GameObject objLineRenderer; private LineRenderer lineRenderer; private int count = 0; private float mass = 1f, drag = 1f, x = 0f, y = 0f, initVel = 10f, angle = 0f, step = 0.05f, time = 0; private float gravity = 9.80665f; private Vector3 vel; // Use this for initialization void Start() { angle = 30f * Mathf.Deg2Rad; vel = new Vector3(initVel * Mathf.Cos(angle), initVel * Mathf.Sin(angle), 0); objLineRenderer = Instantiate(preLineRenderer, gameObject.transform); objLineRenderer.transform.localPosition = Vector3.zero; lineRenderer = objLineRenderer.GetComponent<LineRenderer>(); Time.timeScale = 0.2f; } void DisDrag() { if (y >= 0) { float r = Mathf.Clamp01(1 - drag * Time.fixedDeltaTime); float n = time / Time.fixedDeltaTime; x = vel.x * Time.fixedDeltaTime * r * (1 - Mathf.Pow(r, n)) / (1 - r); y = vel.y * Time.fixedDeltaTime * r * (1 - Mathf.Pow(r, n)) / (1 - r); y = y - r * gravity * Time.fixedDeltaTime * Time.fixedDeltaTime / (1 - r) * (n - r * (1 - Mathf.Pow(r, n)) / (1 - r)); lineRenderer.positionCount = count + 1; lineRenderer.SetPosition(count, new Vector3(x, y, 0f)); count++; time += step; } } // Update is called once per frame void Update() { DisDrag(); } } }

Rigidbodyでの弾道予測を計算で求めているスクリプトです。
このスクリプトの計算で導き出される線を実際に表示できるようにしたいのですが、もちろんただスクリプトをアタッチしただけでは線は表示されませんでした。
何をどうしたら線が表示されるようになるのかがわかりません。
LinRendererというコンポーネントも一緒にアタッチする必要があることだけはわかりました。
ですがそれ以外は調べてもさっぱりわかりませんでした。
このスクリプトの計算による線を表示させるには何をしたら良いのか、分かる方教えてください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2020/04/12 14:59

そのサイトにヒントが書いてありそうなのでURLを教えてください
kosho206

2020/04/12 23:19

いつも回答に協力いただいて本当にありがとうございます・ こちらが参考にしたサイトのURLですhttp://karanokan.info/2018/08/09/post-861/
guest

回答2

0

【Unity勇者の奮闘記】Unityで物理の勉強3(弾道予測線を作成する)
https://lightgive.hatenadiary.jp/entry/2017/10/28/113948

上記サイトが参考になると思います

投稿2020/04/13 01:08

hogefugapiyo

総合スコア3302

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

自己解決

https://qiita.com/_udonba/items/860041daa27e0b7ffa6c
こちらのサイトのコードを参考にさせていただき解決できました。

投稿2020/12/06 09:45

kosho206

総合スコア41

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問