private void UpdateKnockback() { float force = mKnockbackForce * (Time.deltaTime / mKnockbackMaxTime); Vector3 oldPos = GetPos(); Vector3 delta = mKnockbackDirection * force; delta += oldPos; if (mMapManager.CheckInside(delta)) { SetPos(delta.x, delta.y); mKnockbackTime += Time.deltaTime; if (mKnockbackTime >= mKnockbackMaxTime) { SetStatus(UNIT_STATUS.US_IDLE); } } else { SetStatus(UNIT_STATUS.US_IDLE); } }
//---------------------------------------- protected override void MoveUnit() { float speed = Time.deltaTime * mMovingSpeed; Vector3 moveDelta = mMoveDirection * speed; Vector3 oldPos = GetPos(); Vector3 pos = oldPos; pos += moveDelta; if (mMapManager.CheckInside(pos)) { Move(moveDelta.x, moveDelta.y); } }