【问题标题】:How to increase field of view while maintaining range如何在保持范围的同时增加视野
【发布时间】:2017-11-30 01:50:33
【问题描述】:

所以我有以下函数来生成 3 个矢量点让我们创建一个三角形:

private Vector3[] GetFieldOfViewPoint() {
  float Range = 3f;
  float Angle = 45;

  Vector3 offset = new Vector3(0, Range, 0);
  Quaternion rotation1 = Quaternion.Euler(0, 0, -Angle / 2);
  Quaternion rotation2 = Quaternion.Euler(0, 0, Angle / 2);

  return new Vector3[3] {
    transform.position,
    (rotation1 * offset) + transform.position,
    (rotation2 * offset) + transform.position
  };
}

我遇到的问题是,当我增加角度时,范围会减小,这对我来说确实有意义。

例如45角:

135 角:

我需要帮助的问题是如何修改计算以保持范围线(最远的绿色直线)一致,而不管角度如何(上限为 170 度)?

我可以让范围随角度移动,但进行随机计算,但它不一致并且不起作用(至少对于我尝试过的随机数)。我也考虑过斜边公式,但我只知道 1 边的长度(即范围)。

对此的任何帮助都会很棒。

【问题讨论】:

  • Trigonometry。求解 x。
  • 如果您像 Draco 建议的那样将该三角形一分为二,您可以使用“The Law of Sines”来解决它。你会在Mathematics 得到完整的答案;主要问题是与语言无关的三角问题。

标签: c# unity3d math 2d


【解决方案1】:

这里:

脚本:

using UnityEngine;

public class TrignometryTest : MonoBehaviour 
{
    public float range;
    [Range(5,170)]
    public float angle;

    Vector3 size = Vector3.one;

    Vector3[] GetFOVPoints(float _range, float _angleInDegrees)
    {
        Vector3 rightPoint, leftPoint;
        float halfAngle = _angleInDegrees/2;

        rightPoint = new Vector3(_range * Mathf.Tan(halfAngle * Mathf.Deg2Rad), _range, 0);
        leftPoint = new Vector3(-_range * Mathf.Tan(halfAngle * Mathf.Deg2Rad), _range, 0);

        Vector3[] points =  { transform.position, leftPoint, rightPoint};
        return points;
    }

    void OnDrawGizmos()
    {
        var points = GetFOVPoints(range, angle);

        Gizmos.DrawCube(points[0], size);
        Gizmos.DrawCube(points[1], size);
        Gizmos.DrawCube(points[2],size);

        Gizmos.DrawLine(points[0], points[1]);
        Gizmos.DrawLine(points[0], points[2]);
        Gizmos.DrawLine(points[1], points[2]);
        Gizmos.DrawLine(points[0],Vector3.up * range);
    }

}

输出:

希望这会有所帮助:)

【讨论】:

  • 嘿,这很有帮助,我唯一需要做的就是将+ transform.position 添加到左/右位置。这与 stackoverflow.com/a/13695630/384016 一起让我的基本视野脚本启动并运行。
猜你喜欢
  • 2022-06-16
  • 1970-01-01
  • 1970-01-01
  • 2011-08-05
  • 2021-12-04
  • 1970-01-01
  • 1970-01-01
  • 2016-10-15
  • 1970-01-01
相关资源
最近更新 更多