В документации Unity представлено всё довольно понятно, однако на практике возникают сложности. В частности, мне казалось, что метод <i>Vector3.normalized</i> предназначен только для чтения, тогда как <i>Vector3.Normalize()</i> используется для изменения значения переменной. Однако на практике оба метода, как я заметил, выполняют одну и ту же функцию. Можете, пожалуйста, помочь мне разобраться в этом?
В Unity `Vector3.normalized` и `Vector3.Normalize()` действительно имеют разные подходы к нормализации векторов, и их использование может вызывать путаницу.
1. **`Vector3.normalized`**:
- Это свойство, которое возвращает новый вектор, нормализованный вариант исходного вектора. Исходный вектор при этом не изменяется.
- Например:
```csharp
Vector3 original = new Vector3(3, 4, 0);
Vector3 normalized = original.normalized; // normalized будет (0.6, 0.8, 0)
// original остается (3, 4, 0).
```
2. **`Vector3.Normalize()`**:
- Это метод, который нормализует сам вектор, на котором он был вызван. Таким образом, метод изменяет сам объект, на котором вы его вызываете.
- Например:
```csharp
Vector3 original = new Vector3(3, 4, 0);
original.Normalize(); // original теперь (0.6, 0.8, 0)
```
Таким образом, основное различие между ними заключается в следующем:
- `Vector3.normalized` **не изменяет** исходный вектор и возвращает **новый нормализованный вектор**.
- `Vector3.Normalize()` **изменяет** текущий вектор, который вызывает метод, и делает его нормализованным.
Это различие может быть важно в зависимости от контекста вашего кода и того, хотите ли вы сохранить исходные данные или нет.
Когда используешь Vector3.normalized это значение не меняется а Vector3.Normalize() перезаписывает <br/> условно Vector3.Normalize() это <br/> <pre><code class="cs">thisv3 = Normalize(thisv3);
Vector3 Normalize(Vector3 v3)
{
return v3.normalized;
}</code></pre> <br/> как пример что бы разобраться <br/> <pre><code class="cs">[SerializeField]Vector3 _normalized;
[SerializeField]Vector3 _normal;
[SerializeField]Vector3 _newVector1;
[SerializeField] Vector3 _newVector2;
private void Update()
{
_normalized.Set(Input.GetAxis("Vertical"), 0, Input.GetAxis("Horizontal"));
_normal.Set(Input.GetAxis("Vertical"), 0, Input.GetAxis("Horizontal"));
_newVector1 = _normalized.normalized;
_normal.Normalize();
_newVector2 = _normal;
}</code></pre> <br/> а надо это , допустим дальше вектор идет контроллер анимации а там в бленде не 0.7,07 а 1,1