Как сделать увеличивающуюся скорость объекта в Unity3d
Я делаю ранер и для передвижения платформы использую код
using System.Collections;
using System.Collections.Generic;
using System.Security.Cryptography;
using UnityEngine;
public class movecam : MonoBehaviour
{
float speedZ;
float horizontalSpeed = 0.09f ;
// Update is called once per frame
void Update()
{
speedZ = horizontalSpeed;
transform.Translate(0, 0, speedZ);
speedZ = 0;
}
}
но мне нужно, чтобы скорость постепенно увеличивалась.Помогите пожалуйста. И ещё одно у меня 3д риджид бади объекты на большой скорости проходят сквозь другие блоки, как это исправить и с чем это может быть связанно?Если нужна доп информация об игре пишите я скину.
Ответы (1 шт):
Автор решения: Yaroslav
→ Ссылка
using UnityEngine;
[DisallowMultipleComponent]
[RequireComponent(typeof(Rigidbody))]
public class Runner : MonoBehaviour {
[SerializeField] private float _startSpeed = 10f;
[SerializeField] private float _increaseSpeed = 1f;
private Rigidbody _body;
private float _speed;
private void Update () {
_speed += _increaseSpeed*Time.deltaTime;
_body.velocity = new Vector3(_speed, _body.velocity.y, _body.velocity.z);
}
private void Awake () {
_body = GetComponent<Rigidbody>();
_speed = _startSpeed;
}
}
Пролетает на сквозь потому, что у тебя в редакторе fps низкое. В одном кадре он ещё не столкнулся, а в следующем уже за стенкой и ни в одном из кадров столкновения не фиксируется.
Если не ошибаюсь в настройках тела Collision Detection нужно поменять.
П.С. не камера должна двигаться, а персонаж, за которым следит камера.