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

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

ただいまの
回答率

87.33%

unity 頂点移動について

受付中

回答 1

投稿

  • 評価
  • クリップ 0
  • VIEW 4,731

score 8

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

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

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

using UnityEngine;
using System.Collections;

public class test15 : MonoBehaviour {

MeshFilter meshFilter;
Vector3[] defaultVertices;
Mesh mesh;

float speed = 10;

// Use this for initialization
void Start () {

}

void Awake()
{
mesh = GetComponent<MeshFilter> ().mesh;
defaultVertices = mesh.vertices;
}

// Update is called once per frame
void Update () {

Vector3[] vertices = mesh.vertices;

if (Input.GetKey ("q")) {

vertices [1].z -= speed * Time.deltaTime;
vertices [2].z -= speed * Time.deltaTime;
vertices [2].x -= speed * Time.deltaTime;
vertices [3].x -= speed * Time.deltaTime;
vertices [4].z += speed * Time.deltaTime;
vertices [4].x -= speed * Time.deltaTime;
vertices [5].z += speed * Time.deltaTime;
vertices [6].z += speed * Time.deltaTime;
vertices [6].x += speed * Time.deltaTime;
vertices [7].x += speed * Time.deltaTime;
vertices [8].z -= speed * Time.deltaTime;
vertices [8].x += speed * Time.deltaTime;


}
mesh.vertices = vertices;
mesh.RecalculateBounds ();
}
}
  • 気になる質問をクリップする

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

+1

数学を学びましょう。

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

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

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

拡大

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

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/12/12 01:10

    なるほど…そういうことでしたか…勉強になります。ありがとうございます。

    もう一つ質問なのですが「移動距離を揃える」とはどうすればいいでしょうか?

    キャンセル

  • 2015/12/14 09:24

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

    キャンセル

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

  • ただいまの回答率 87.33%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る