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

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

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

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

Unity3D

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

Q&A

1回答

1438閲覧

【Unity】このプログラムをわかりやすく説明してほしいです。

退会済みユーザー

退会済みユーザー

総合スコア0

C#

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

Unity3D

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

0グッド

0クリップ

投稿2019/02/12 08:27

前提・実現したいこと

最近Unityをはじめました。
このプログラムをわかりやすく説明してほしいです。
できれば一行ずつお願いします。
(投射の落下地点を調べるスクリプトらしいです。)

発生している問題

DrawParabolicLine.cs

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class DrawParabolicLine : MonoBehaviour {
public Vector3 dir = new Vector3(10f, 10f, 10f);
public Vector3 origin = Vector3.zero;
public float calcTime = 5f;
[SerializeField, Range(0.001f,0.5f)]public float timeScale = 0.1f;
// Use this for initialization
void Start () {

} // Update is called once per frame void Update () { Vector3 pos = origin; Vector3 newPos = pos; float time = 0f; List<Vector3> posList = new List<Vector3>(); while(time<calcTime){ Vector3 dirXZ = new Vector3(dir.x, 0f, dir.z); // h=v0t+1/2*g*t^2 float h = dir.y*time + 0.5f * Physics.gravity.y * time * time; newPos = origin + dirXZ * time + Vector3.up * h; posList.Add(newPos); Debug.DrawLine(pos, newPos, Color.yellow); pos = newPos; time += timeScale; } }

}

リンク

https://qiita.com/ELIXIR/items/1cdeb4ddef7e45e9aad5

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

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

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

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

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

azuapricot

2019/02/12 08:52

わからないものは使わない方が良いでしょう。 「できれば1行ずつ解説してください」 ↑ ここまで求めるならどこかプログラミングスクールに通って先生に聞きましょう。
azuapricot

2019/02/12 08:53

最近初めて基礎もなにもわからないなら、そんなコピペコードで楽しようとするのではなく きちんと基礎から学びましょう
m.ts10806

2019/02/12 10:45

これは質問ではないですよ。teratailはそういうサイトではありません。親切に教えてくれる人はいるかもしれませんが、それに甘えて同じことを繰り返せばいずれ誰も相手をしなくなります。 (それにコードも推奨されている提示のしかたではないし)
guest

回答1

0

Updateだけですよね?

csharp

1 void Update () { 2//初期化 3 Vector3 pos = origin; //現在の座標 pos 4 Vector3 newPos = pos; //次の座標 newPos 5 float time = 0f; //経過時間 time 6 List<Vector3> posList = new List<Vector3>(); //移動していく座標の集合 7//繰り返し 8 while(time<calcTime){ // 観測時間(calcTime→コード冒頭で5f指定)までの間ループ 9 Vector3 dirXZ = new Vector3(dir.x, 0f, dir.z); //X,Zの座標成分(風などに影響を受けない射出 10 // h=v0t+1/2*g*t^2 11 float h = dir.y*time + 0.5f * Physics.gravity.y * time * time; //高さ成分を時刻と重力加速度から求める 12 newPos = origin + dirXZ * time + Vector3.up * h; //初期位置から計算した次の時刻の座標をXZと高さで求める 13 posList.Add(newPos); //移動履歴に追加 14 Debug.DrawLine(pos, newPos, Color.yellow); //現在の座標から次の座標まで黄色の線を描画(元サイト参照) 15 pos = newPos; //求め終わった座標を現在の座標にする 16 time += timeScale; //時間をすすめる 17 } 18 }

投稿2019/02/12 08:54

papinianus

総合スコア12705

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問