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

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

ただいまの
回答率

87.37%

カメラ追尾スクリプトで追尾しない原因とは?

受付中

回答 1

投稿

  • 評価
  • クリップ 0
  • VIEW 1,104
退会済みユーザー

退会済みユーザー

プレイヤーの後をカメラが追尾するスクリプトで誤差を出したく小数点以下を消そうと思うのですがカメラが追尾していきませんこれはなにをしたのでしょうか?transform.position +=のコメントにしたるところをコメント戻すと動くのですがなぜでしょうか?
むろん GameObjectにはプレイヤーは入っています。

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

public class Camera_con : MonoBehaviour {

    public GameObject player;    
    private Vector3 play_pos;
    private Vector3 off;


    // Use this for initialization
    void Start () {        
        play_pos = player.transform.position;
        off = Vector3.zero;
    }

    class t
    {
        public int x;
        public int y;
        public int z;
    }
    // Update is called once per frame
    void Update () {


        t e = new t();
        e.x = (int)(player.transform.position.x - play_pos.x);
        e.y = (int)(player.transform.position.y - play_pos.y);
        e.z = (int)(player.transform.position.z - play_pos.z);
        Vector3 v = new Vector3();
        v.x = e.x;
        v.y = e.y;
        v.z = e.z;


        //transform.position += (player.transform.position - play_pos);
        transform.position += v;

        play_pos = player.transform.position;
        off = transform.position;

        if(Input.GetMouseButton(1))
        {
            float input_h = Input.GetAxis("Mouse X");
            float input_v = Input.GetAxis("Mouse Y");

            transform.RotateAround(play_pos,Vector3.up,input_h * Time.deltaTime * 200.0f);
            transform.RotateAround(play_pos,transform.right,-input_v * Time.deltaTime * 200.0f);
        }
    }
}
  • 気になる質問をクリップする

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

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

    クリップを取り消します

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

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

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

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

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

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

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

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

    質問の評価を下げる

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

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

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

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

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

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

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

    詳細な説明はこちら

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

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

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

回答 1

+1

Playerが移動する前と移動した後の距離が1.0f以上でなければ、切り捨てられ0とみなされるので追従はしないのですが、Playerのフレーム事の移動距離は条件を満たしていますでしょうか。
Debug.Log等で確認してみてください。

transform.position += (player.transform.position - play_pos)についてですが、これは前フレームのPlayerの位置と現フレームのPlayerの位置の差を計算して、その差分カメラを移動させています。
やっている事は小数点以下を切り捨てているかどうかで、transform.position += v;と大差ないかと思います。

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2019/10/04 23:13

    質問です自分がやりたいことは待機モーションの1以下の値の動きをカメラのスクリプトが感知してしまってどんなに小さい値でもカメラが少し動いてしまい気持ちよくないのでその細かいところを修正したいのですが

    キャンセル

  • 2019/10/05 16:54

    「これ以上動いたらカメラが移動する」という閾値を決める必要があります。そしてそれは1よりかなり小さいはずです。
    だって「Unityで作れるCubeの一辺の長さ」が1ですよ? プレイヤーがこの距離を1フレーム中に移動しないとカメラが移動しないというのはおかしな話だと思いませんか?

    キャンセル

  • 2019/10/07 10:09

    待機モーション以外で動く条件ifは「待機モーションのブレ(定数)<Playerが動いた位置(変数)」です。
    また、当然条件で指定したブレ以上で動かなくては待機モーションであろうがなかろうが条件に満たないのでカメラは追尾しません。
    現状の例で例えますが、待機モーションのブレが1.0fとして仮定、Playerの1フレームの動いた距離が1.0f以下なので追尾していないと考えています。
    なので、解決策としては、

    1.Playerの1フレームの移動距離を1.0f以上になるように加える力を増やす。
    2.待機モーションのブレの値を見直す。

    1.につきましては、sakura_hanaさんが仰るようにゲームが破綻する可能性があります。Unity世界の1は現実世界の1mにあたるそうですので。

    2.につきましてはブレとする値が大きすぎるためです。待機モーションのブレが本当に1.0f以上なのか確かめてください。インスペクターの目視でも構いませんが、スクリプトで値を取った方が確実かと思います。求め方が分からなければまたコメントしてください。

    キャンセル

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

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

関連した質問

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