public virtual void MoveTo(float endX, float endY, int duration, InterpolationMode mode) { _beginX = _curPos.x; _beginY = _curPos.y; _endX = endX; _endY = endY; _moveToTime = 0; _moveToDuration = duration; _moveFunc = MathUtil.GetInterpolationFloatFunc(mode); _isMovingTo = true; _isActive = true; }
public void Reset() { _moveFunc = null; _isMovingTo = false; _isMovingStraight = false; _isMovingCurve = false; _vx = _vy = _dvx = _dvy = 0; _curAcce = _curAccAngle = _curVAngle = 0; _maxVelocity = -1; _isActive = false; _curRotation = 0; _reCalVAngle = false; ResetExtraSpeedParas(); }
protected void MovingTo() { _moveToTime++; // 临时记录 _dx = _curPos.x; _dy = _curPos.y; // 计算新的位置 _curPos.x = _moveFunc(_beginX, _endX, _moveToTime, _moveToDuration); _curPos.y = _moveFunc(_beginY, _endY, _moveToTime, _moveToDuration); if (_moveToTime >= _moveToDuration) { _curPos.x = _endX; _curPos.y = _endY; _moveFunc = null; _isMovingTo = false; } // 计算位置增量 _dx = _curPos.x - _dx; _dy = _curPos.y - _dy; }
public void Clear() { isCached = false; isFinish = false; GetInterpolationValueFunc = null; }
/// <summary> /// 设置插值的方式 /// </summary> /// <param name="mode"></param> protected void SetInterpolationMode(InterpolationMode mode) { _interpolationMode = mode; _interpolationFunc = MathUtil.GetInterpolationFloatFunc(mode); }