Ejemplo n.º 1
0
        public void Update(float dt, AccelFunc accelFunc)
        {
            var accel = accelFunc(this.position, this.velocity);

            this.position += this.velocity * dt;
            this.velocity += accel * dt;
        }
Ejemplo n.º 2
0
 void StartSpringDumper()
 {
     _accelFunc    = AccelFuncSpringDumper;
     _positionFunc = PositionFuncSpringDumper;
     _energyFunc   = EnergyFuncSpring;
     ResetStates();
 }
Ejemplo n.º 3
0
        public void Set(Vector2 position, Vector2 velocity, float dt, AccelFunc accelFunc)
        {
            _prevPosition = position;
            this.velocity = velocity;
            var accel = accelFunc(position, velocity);

            this.position = _prevPosition + (velocity * dt) + (accel * (0.5f * dt * dt));
        }
Ejemplo n.º 4
0
        public void Update(float dt, AccelFunc accelFunc)
        {
            this.position += (this.velocity * dt) + (_accel * (0.5f * dt * dt));
            var newAccel = accelFunc(this.position, this.velocity);             // 速度が近似なのでこの加速度計算の速度による項はウソ。

            this.velocity += (_accel + newAccel) * (0.5f * dt);
            _accel         = newAccel;
        }
Ejemplo n.º 5
0
        public void Update(float dt, AccelFunc accelFunc)
        {
            var accel       = accelFunc(this.position, this.velocity);       // 速度が近似なのでこの加速度計算の速度による項はウソ。
            var newPosition = (this.position * 2f) - _prevPosition + (accel * (dt * dt));

            _prevPosition = this.position;
            this.position = newPosition;
            this.velocity = (this.position - _prevPosition) / dt;             // この速度は近似値。正しい計算には次の位置が必要。
        }
Ejemplo n.º 6
0
    void StartSpringDumper()
    {
        var position = new Vector2(300f, 0f);
        var velocity = Vector2.zero;

        _accelFunc    = AccelFuncSpringDumper;
        _positionFunc = PositionFuncSpringDumper;
        _energyFunc   = EnergyFuncSpring;
        _eulerState.Set(position, velocity, Time.fixedDeltaTime, _accelFunc);
        _semiImplicitEulerState.Set(position, velocity, Time.fixedDeltaTime, _accelFunc);
        _verletState.Set(position, velocity, Time.fixedDeltaTime, _accelFunc);
    }
Ejemplo n.º 7
0
 public void Set(Vector2 position, Vector2 velocity, float dt, AccelFunc accelFunc)
 {
     this.position = position;
     this.velocity = velocity;
     Update(dt, accelFunc);
 }
Ejemplo n.º 8
0
 public void Set(Vector2 position, Vector2 velocity, float dt, AccelFunc accelFunc)
 {
     this.position = position;
     this.velocity = velocity;
     _accel        = accelFunc(position, velocity);
 }