Помощь в написании студенческих работ
Антистрессовый сервис

Следуй за мышью

РефератПомощь в написанииУзнать стоимостьмоей работы

В результате мы получим возможность управлять нашим игроком мышью, а движение получится плавным и реалистичным: Шайба будет описываться классом Puck. Самое важное здесь — метод update () и поле mOwner. Давайте заменим блуждающий метод в классе Athlete на движение к курсору мыши: Private var mOwner: Athlete; // хоккеист, который владеет шайбой. Поэтому он будет следовать за курсором мыши. Главный… Читать ещё >

Следуй за мышью (реферат, курсовая, диплом, контрольная)

Мышь имеет координаты на экране, а потому мы можем использовать их в качестве пункта назначения для игрока. Мы можем использовать метод arrival объекта mBoid. Он задает цель, которую будет преследовать игрок. Движение будет плавным, а по мере приближения скорость хоккеиста будет падать и, в конце концов, станет равна 0.

Давайте заменим блуждающий метод в классе Athlete на движение к курсору мыши:

public class Athlete { // (…).

public function update ():void {.

// очистка всех действующих сил.

mBoid.steering = null;

// игрок управляет хоккеистом,.

// поэтому он будет следовать за курсором мыши.

followMouseCursor ();

// главный метод обновления физического тела.

mBoid.update (); }.

private function followMouseCursor () :void {.

var aMouse: Vector3D = getMouseCursorPosition ();

mBoid.steering = mBoid. steering + mBoid. arrive (aMouse, 50); } }.

В результате мы получим возможность управлять нашим игроком мышью, а движение получится плавным и реалистичным:

Добавим шайбу

Шайба будет описываться классом Puck. Самое важное здесь — метод update () и поле mOwner.

public class Puck {.

public var velocity: Vector3D;

public var position: Vector3D;

private var mOwner: Athlete; // хоккеист, который владеет шайбой.

public function setOwner (theOwner :Athlete) :void {.

if (mOwner ≠ theOwner) {.

mOwner = theOwner;

velocity = null; } }.

public function update ():void { }.

public function get owner () :Athlete { return mOwner; } }.

Следуя той же логике, что и выше, метод update () будет выполняться каждый раз, пока запущена игра. Поле mOwner будет хранить того хоккеиста, который владеет шайбой. Если же mOwner равно null, то шайба никому не принадлежит и она свободно скользит по катку.

Если же mOwner не равно null, то владелец у шайбы имеется. В этом случае шайба насильно ставится перед своим владельцем. Для этого используется вектор скорости хоккеиста, который также соответствует и вектору направления. Вот наглядная иллюстрация:

public class Puck {.

// (…).

private function placeAheadOfOwner () :void {.

var ahead: Vector3D = mOwner.boid.velocity.clone ();

ahead = normalize (ahead) * 30;

position = mOwner.boid.position + ahead; }.

override public function update ():void {.

if (mOwner ≠ null) {.

placeAheadOfOwner (); } }.

// (…) }.

В классе PlayState есть проверка на коллизию с шайбой. Если какой-то хоккеист перекроет шайбу, то он становится новым владельцем. Вы можете протестировать это в демо-режиме, представленном ниже:

Показать весь текст
Заполнить форму текущей работой