Урок 18 Движение на SFML спрайт до местоположението на щракване на мишката, kychka-pc, SFML
Движението на спрайт при щракване често се използва в игри като стратегически или RPG. В този урок ще разгледаме изпълнението на такова движение.
Ще има малко аналитична геометрия, но тук всичко е просто, съветвам ви да седнете и да го разберете
За да създадете движение при щракване, трябва да имате вектор, който започва от координатите на нашия герой и завършва в точката, където е щракнат курсорът.
Нека добавим променливите isMoved и isClicked към класа играч:
Инициализирахме ги в конструктора:
Променливата isMove ще отговаря за състоянието на движението на героя, т.е. докато се движи isMove=true, в противен случай =false. Променливата isClicked ще позволи на играча да кликне върху героя и да му каже къде да отиде. Ако не го бръкне и не го избере, тогава няма да може да отиде. Всичко е като в стратегиите!
Сега нека декларираме променливи в int main()
Вече имаме игровите координати на курсора от последния урок, проверете дали са останали:
Сега, в цикъла на събитията, ще подадем левия бутон на мишката, който ще отговаря за избора на обекта.
Ако натиснете левия клавиш и в същото време натиснете курсора върху нашия спрайт на играча, тогава боядисваме спрайта в зелено (например, по този начин играчът ще разбере, че е ударил и обектът е готов за действие) и променяме променливата isSelect на true.
След това, преди края на цикъла на събитието, прилагаме десен клик, което е възможно, ако сме избрали обект. Това щракване ще направи променливата isMove true, ще запише координатите на щракването на курсора, ще върне спрайта към предишния му цвят, ще каже, че обектът вече не е избран:
След края на цикъла на събитието и неговото затваряне ще напишем кода, който реализира движението на героя:
Ето още малко за разбиране на картинката:
sfml урок 18На екранната снимка вместо героя имам стрела, защото моят спрайткотката не е подходяща за стратегии, а също и в следващия урок ще завъртим спрайта към мястото на посоката му на движение (както и курсора), така че стрелката ще посочи по-точно тази посока.
преместете с щракване на мишкатаЕто една забавна снимка за вас))
Бих искал да отбележа, че координатите на курсора ще бъдат взети постоянно, но е по-добре да го направите с щракване на мишката, тоест, когато щракнете с мишката, превключете флага, който ще премахне координатите, опитайте се да приложите това в условието isSelect.