Я хочу сделать спрайтный переход к мускулиту (как и в большинстве стратегических игр). Но я сделал это только тогда, когда я нажимаю и удерживаю левую кнопку мыши до сих пор. Когда я меняю if-предложения на циклы while, спрайт немедленно переходит в положение мыши. Может кто-нибудь мне помочь? Может быть, есть более простой способ сделать перемещение спрайта в определенную позицию, щелкнув мышью?Monogame/XNA, переместить спрайт в позицию мышеловка
наилучшими пожеланиями, Алекс
mCurrentMouseState = Mouse.GetState();
if (mCurrentMouseState.LeftButton == ButtonState.Pressed)
mDestination = new Vector2(mCurrentMouseState.X, mCurrentMouseState.Y);
Vector2 direction = Vector2.Normalize(mDestination - mPosition);
mPosition += direction * (float) gameTime.ElapsedGameTime.TotalSeconds * mSpeed;
if (Vector2.Distance(mPosition, mDestination) < 1)
direction = Vector2.Zero;
это, конечно, умнее моего кода. Но моя главная проблема в том, что я хочу, чтобы спрайт перешел в MouseState, даже когда я отпущу кнопку. – Sancho
Я не совсем уверен, что вы пытаетесь сделать. Если вы просто хотите что-то вроде я, курсор мыши просто использует 'mPositionBat = mCurrentMouseState;' без каких-либо условий. _ Также как примечание. Если это первая игра, которую вы пытаетесь сделать, я бы посоветовал вам не создавать стратегическую игру и вместо этого попробовать что-то более простое, например, понг или тетрис ._ – DeadlySurprise
mPositionBat = mCurrentMouseState; не работает, потому что mPositionBat является Vector2, а mCurrentMouseState является MouseState. Я изучаю прямо сейчас, и моя задача - сделать спрайт-переход до точки, где вы нажимаете на мышь. Когда я делаю mPositionBat.X = mCurrentMouseState.X;, спрайт не медленно перемещается в направлении, а сразу переходит к точке, где я щелкнул мышью. – Sancho