Как ограничить скорость обьекта по горизонтальным осям в Unity 3d
У меня есть скрип который уже ограничивает скорость объекта, но он также ограничивает и вертикальную скорость, а мне это не нужно - только горизонтальную. Вот скрипт (CS)
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class SpeedBorder : MonoBehaviour
{
private Rigidbody Obj;
[SerializeField] private float _MaxSpeedOfObj = 10;
private void Awake() {
Obj = GetComponent<Rigidbody>();
}
private void FixedUpdate() {
if (Obj.velocity.magnitude >= _MaxSpeedOfObj) { Obj.velocity = Obj.velocity.normalized * _MaxSpeedOfObj; }
}
}
Ответы (1 шт):
Автор решения: Eugenio Uglov
→ Ссылка
Если объект перемещается при нажатии клавиш, то можно просто изменять скорость, когда объект перемещается в определенную сторону.
Например.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class SpeedBorder : MonoBehaviour
{
private Rigidbody Obj;
[SerializeField] private float _MaxSpeedOfObj = 10;
private float _defaultVelocity = 10;
private void Awake() {
Obj = GetComponent<Rigidbody>();
_defaultVelocity = Obj.velocity;
}
private void FixedUpdate() {
if (Input.GetKey("a") || Input.GetKey("d"))
{
if (Obj.velocity.magnitude >= _MaxSpeedOfObj) { Obj.velocity = Obj.velocity.normalized * _MaxSpeedOfObj; }
}
if (Input.GetKey("w") || Input.GetKey("s"))
{
if (Obj.velocity != _defaultVelocity)
{
Obj.velocity = _defaultVelocity
}
}
}
}