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

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

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

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

Unity3D

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

Q&A

1回答

5993閲覧

unity 頂点移動について

bp43

総合スコア8

C#

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

Unity3D

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

1グッド

0クリップ

投稿2015/12/11 03:54

現在unityでゲームを作っています。

ゲームオブジェクトの一部を伸縮させる為に、vertices(頂点)を移動させています。
しかし、8角形や12角形の図形の一部を伸縮しようとすると、頂点の動く速度が均等でないのか、画像のようにずれてしまいます。ずれずにロールスケールを変えた時のように、均等に伸縮させる事は出来ないでしょうか?

以下スクリプトです。スクリーンショット

c#

1using UnityEngine; 2using System.Collections; 3 4public class test15 : MonoBehaviour { 5 6MeshFilter meshFilter; 7Vector3[] defaultVertices; 8Mesh mesh; 9 10float speed = 10; 11 12// Use this for initialization 13void Start () { 14 15} 16 17void Awake() 18{ 19mesh = GetComponent<MeshFilter> ().mesh; 20defaultVertices = mesh.vertices; 21} 22 23// Update is called once per frame 24void Update () { 25 26Vector3[] vertices = mesh.vertices; 27 28if (Input.GetKey ("q")) { 29 30vertices [1].z -= speed * Time.deltaTime; 31vertices [2].z -= speed * Time.deltaTime; 32vertices [2].x -= speed * Time.deltaTime; 33vertices [3].x -= speed * Time.deltaTime; 34vertices [4].z += speed * Time.deltaTime; 35vertices [4].x -= speed * Time.deltaTime; 36vertices [5].z += speed * Time.deltaTime; 37vertices [6].z += speed * Time.deltaTime; 38vertices [6].x += speed * Time.deltaTime; 39vertices [7].x += speed * Time.deltaTime; 40vertices [8].z -= speed * Time.deltaTime; 41vertices [8].x += speed * Time.deltaTime; 42 43 44} 45mesh.vertices = vertices; 46mesh.RecalculateBounds (); 47} 48}
9nahito👍を押しています

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

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

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

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

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

guest

回答1

0

数学を学びましょう。

正八角形の各頂点は正八角形の中心からすべて等距離です。
ということは歪まずに拡大するとなると、各頂点の移動距離はすべて同一でなければなりません。

それを踏まえて質問文の頂点[1]と[2]を試しに見てみると
[1]はspeeddt移動しますが、[2]は√2speed*dt移動しています。

移動距離を揃えましょう。

拡大

Unityではないですが、考え方は全く一緒なので参考にしてください
参考

投稿2015/12/11 04:01

編集2015/12/11 05:40
ozwk

総合スコア13512

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

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

bp43

2015/12/11 16:10

なるほど…そういうことでしたか…勉強になります。ありがとうございます。 もう一つ質問なのですが「移動距離を揃える」とはどうすればいいでしょうか?
ozwk

2015/12/14 00:24

「[1]はspeed*dt移動しますが、[2]は√2*speed*dt移動しています。 」 を読んで何もピンと来ない場合、 この処理を行うための数学の知識が足りていないので、 ベクトルとかその辺りを勉強し(直し)てください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問