/* public void Update() { * DateTime now = DateTime.Now; * _dt = now.Ticks - _latsTs; * _latsTs = now.Ticks; * * _ds = V / _dt; * * }*/ public void Update() { DateTime now = DateTime.Now; _dt = Time.deltaTime;// now.Ticks - _latsTs; _latsTs = now.Ticks; // _vCurrentMax = Vector3.Angle(Vector3.up, ); //_ds = (float)V / _dt; int qq = 0; _offset = Vector3.zero; if (_dirN < _directions.Length) { //Debug.Log(" "+_v0+"|"+_a+"|"+ _dirN +"|"+ _directions.Length); do { _a = (float)(A * Math.Cos(Vector3.Angle(Vector3.down, _directions[_dirN]) * Math.PI / 180.0)); _a -= _v0 * _v0 * (1 + 2 * Mathf.Sin(Vector3.Angle(Vector3.down, _directions[_dirN]) * Mathf.PI / 180)) * (1 + 2 * Mathf.Sin(Vector3.Angle(Vector3.down, _directions[_dirN]) * Mathf.PI / 180)); _ds = _v0 * _dt + _a * _dt * _dt / 2; _modDir = _modDir == 0 ? _directions[_dirN].magnitude : _modDir; if (_ds < _modDir) { _offset += (_ds / _directions[_dirN].magnitude) * _directions[_dirN]; _modDir -= _ds; _v0 = _v0 + _a * _dt; _dt = 0; //Debug.Log("_v0=" + _v0); //_modDir = _ds - _modDir;// -= _ds; } else { _offset += (_modDir / _directions[_dirN].magnitude) * _directions[_dirN]; _v = Mathf.Sqrt(_v0 * _v0 + _a * _modDir); _dt = _dt - 2 * _modDir / (_v0 + _v); _v0 = _v; _modDir = 0; _dirN++; } Vslider.showValue(_v0); qq++; } while (_dt > 0 && _dirN < _directions.Length && qq < 20); // Debug.Log(_dt.ToString()+"_"+_ds.ToString()+"_"+_offset.magnitude); _blob.localPosition += _offset; } }
// Start is called before the first frame update void Start() { instance = this; }