問題の概要
どんなにゲームの種類、レンズは必要不可欠な要素です。私たちは、メインキャラクターに従うためにレンズを移動したい傾向にあるが、時には、このような硬すぎるレンズシフト(すなわち、滑らかではないが、ダイナミックで突然終了ホム)などの問題の多くを得られるか、主人公は永遠にレンズの中心に固定されている(表示されません動的な文字)。
ソリューション
実際には、問題の本質がある:テクスチャの欠如のレンズを移動させる、つまり、私たち人間の目はビジョンと一致していません変換します。実生活では、我々は、遅延の後に私たちの目には、移動後に続く、最初の動き物事を見る必要があります。一方で、我々は速い再びから、それは速いに遅いからでなければならないことを、時間の視野を移動していますスローではなく、突然の変換シェイクビジョンよりもプロセスを、「軟化」と突然の大群、それは非常に厄介と思われます。
結論として、我々はまた、物理モデル許さシミュレーション与え、メインカメラに望む「物理的な世界では、人間の目の変換モードを。」次のように具体的なプロセスは、次のとおりです。
- スクリプトとハングアップするためにカメラの剛体は、本文タイプ選択したダイナミックで剛体では、注意がセット摩擦です。
- スクリプトに、硬質成分を取得し、主人公とカメラの座標を求めます。
- 計算された強度は、(詳細な説明は下記を参照)を適用しました。
- 力コーディングが適用されます。
- 試験閾値は、期待を満たしています。(メイン文字変換の中心から視野角ずれが遠景を開始したときに、臨界値を参照してください)
コードの実装
コードは、自分のニーズに応じてゲームの鍵達成することは難しいことではない、施力算法
と临界值
変更を行います。
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方向の極端な値(極値に必要であることに留意されたいですシーン)