Unity3Dの経験(1) - 柔らかくカメラは、以下の

問題の概要

どんなにゲームの種類、レンズは必要不可欠な要素です。私たちは、メインキャラクターに従うためにレンズを移動したい傾向にあるが、時には、このような硬すぎるレンズシフト(すなわち、滑らかではないが、ダイナミックで突然終了ホム)などの問題の多くを得られるか、主人公は永遠にレンズの中心に固定されている(表示されません動的な文字)。

ソリューション

実際には、問題の本質がある:テクスチャの欠如のレンズを移動させる、つまり、私たち人間の目はビジョンと一致していません変換します。実生活では、我々は、遅延の後に私たちの目には、移動後に続く、最初の動き物事を見る必要があります。一方で、我々は速い再びから、それは速いに遅いからでなければならないことを、時間の視野を移動していますスローではなく、突然の変換シェイクビジョンよりもプロセスを、「軟化」と突然の大群、それは非常に厄介と思われます。
結論として、我々はまた、物理モデル許さシミュレーション与え、メインカメラに望む「物理的な世界では、人間の目の変換モードを。」次のように具体的なプロセスは、次のとおりです。

  1. スクリプトとハングアップするためにカメラの剛体は、本文タイプ選択したダイナミックで剛体では、注意がセット摩擦です。
  2. スクリプトに、硬質成分を取得し、主人公とカメラの座標を求めます。
  3. 計算された強度は、(詳細な説明は下記を参照)を適用しました。
  4. 力コーディングが適用されます。
  5. 試験閾値は、期待を満たしています。(メイン文字変換の中心から視野角ずれが遠景を開始したときに、臨界値を参照してください)

コードの実装

コードは、自分のニーズに応じてゲームの鍵達成することは難しいことではない、施力算法临界值変更を行います。

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

public class Camera : MonoBehaviour
{
    public GameObject go;
    private float gox;
    private float goy;
    private float x;
    private float y;
    private float speed=7;
    [HideInInspector]
    public Rigidbody2D rg;

    private void Awake()
    {
        rg = GetComponent<Rigidbody2D>();
    }

    private void Update()
    {
        gox = go.transform.position.x;
        goy = go.transform.position.y;
        x = transform.position.x;
        y = transform.position.y;
        if (gox - x > 6&&x<98) rg.AddForce(new Vector2(gox - x, 0) * speed);
        if (x - gox > 6&&x>-96) rg.AddForce(new Vector2(gox - x, 0) * speed);
        if (y - goy > 1&&y>-26) rg.AddForce(new Vector2(0, goy - y) * speed);
        if (goy - y > 1&&y<26) rg.AddForce(new Vector2(0, goy - y) * speed);
    }
}

GOX-X | |アプリケーション強度の開始が臨界値を超えた後、カメラの図は、上記閾値は、6 X方向、Y方向には臨界値です。
迅速にカメラがもはや力の端部に印加されていないシーンに達したときに、それはそうでなければカメラの慣性がリリースされます、以下ある程度シーンの実際のエッジよりも値に設定され、X、Y方向の極端な値(極値に必要であることに留意されたいですシーン)

发布了8 篇原创文章 · 获赞 1 · 访问量 332

おすすめ

転載: blog.csdn.net/weixin_42921101/article/details/100082941