Как сделать увеличивающуюся скорость объекта в 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 нужно поменять.

П.С. не камера должна двигаться, а персонаж, за которым следит камера.

→ Ссылка