на главную почта поиск
 
поиск
Диона Холдинг
   
   
FLASH-версия 
 Версия для печати 
  Новости
 

   
Новости  
   

Облака

Наш Герой научился вставать около стены, это здорово. (Хорошо хоть башкой в стенку не бьется.) Но в разных играх и стенки могут быть разными. Во многих играх стенки имеют тип «облако», при этом Герой может их (стенки) проходить или даже прыгнуть на стенку-облако, да, и остаться там.

Посмотрите на картинку, Герой не может пройти плитку с любого направления.

Ну, а если это облако. Герой может войти туда с любого направления, кроме как сверху (как Ежик в тумане).

(Все таки странная проекция, ничего странного, вид с лица, вроде, как наверху не тоже самое, что внизу. Если попробовать сверху, то упадем, прямо с квозь облако вниз.)

Если Герой будет стараться войти сверху, то он должен упасть сквозь облако.

Первое, нужно установить свойство плитки "cloud" (прозрачность). Если плитка прозрачна, то значение - true, и плитка проходима. Объявим этот тип плитки:

game.Tile4= function () {};
game.Tile4.prototype.walkable=true;
game.Tile4.prototype.cloud=true;
game.Tile4.prototype.frame=4;

Для такой плитки свойство проходимости также установлено true и Герой может проходить и вставать на нее. Если же Герой должен падать, то создадим новую функцию checkIfOnCloud. Для начала определим функцию:

//****************
// Функция: checkIfOnCloud
// Назначение: Проверка плитки под объектом
// Параметры:
// ob - объект
// Возвращает:
// true - внизу «облако»
// false - внизу препятствие
// ****************************
function checkIfOnCloud (ob) {

// Определяем принадлежность плитки снизу-слева и снизу-справа от Объекта к «облаку»
var leftcloud = game["t_"+ob.downY+"_"+ob.leftX].cloud;
var rightcloud = game["t_"+ob.downY+"_"+ob.rightX].cloud;

// Проверим (Внизу «облако» и Объект НЕ падает)?
if ((leftcloud or rightcloud) and ob.ytile != ob.downY){

// ДА - конец
return(true);
} else {

// НЕТ - конец
return(false);
}

}

Мы используем проверку препятствий снизу - слева / справа от того места, где топчется Герой на плитке. Если плитка прозрачна, то вернем true, иначе false.

Теперь, нам нужно вызвать эту функцию в двух местах: (1) в функции moveChar, при проверке движения вниз, и (2) в функции fall, при проверке - может ли Герой стоять на плитке или начнет падать.

В функции moveChar это строка после if (diry == 1)

if (ob.downleft and ob.downright) {

Добавим проверку прозрачности плитки:

if (ob.downleft and ob.downright and !checkIfOnCloud (ob)) {

То же самое в функции fall, заменим строку

if (ob.downleft and ob.downright) {

на строку

if (ob.downleft and ob.downright and !checkIfOnCloud (ob)) {

Итак, прежде мы использовали только проверку наличия препятствий слева/справа внизу от проходной плитки (по свойствам определенным в функции getMyCorners). Теперь мы добавили проверку прозрачности этих плиток.

Ура, салют и брызги шампанского !

Можно загрузить исходные коды отсюда.

Исправление ошибок 22.06.2004. Наше с кисточкой Карлосу (Carlos) за обнаружение ошибок в работе с прозрачностью. Я обновил учебник и исходные коды, но если у вас ничего не получается, то посмотрите на код определения прозрачности в функции checkIfOnCloud :

if (leftcloud or rightcloud) {

а нужно

if ((leftcloud or rightcloud) and ob.ytile != ob.downY) {

Пожалста, замените строку.

Есть вопросы - пишите мне на semikin@dionaholding.ru

Читаем дальше - Глава 8. Лестницы

Возвращаемся на Начало учебника

 

Всего: 5

Электронные формы от Adobe

14 ноября с.г. компания представила новую версию всем известного средства Adobe Acrobat. 8-ая по счету версия принесла новые возможности по переходу от бумажных документов к электронным.
читать
 

АрмПарк - Универсальная учетная система

Серия материалов о программе - АрмПарк - Универсальная учетная система. Решение для тех кому необходимо быстро создать и внедрить электронную картотеку по учету - документов, матералов, оборудования, ресурсов или зеленых человечков.
читать
 

Программирование игр на основе плиток

Представляется перевод замечательного учебника по созданию движка игры на основе плиток (Tile Based Games). Я благодарен автору Tonypa за разрешение публикации перевода. Если у Вас возникают вопросы, пишите и я постараюсь Вам помочь.
читать
 

Универсальная информационная система-конструктор Учет документов (Доклад на конференции).

Доклад на Третьей практической конференции по Электронному Документообороту - "Программа "Учет документов" ", 9 декабря, Москва, Мэрия Москвы.
читать
 

Интеграция систем с использованием новых технологий

Один из ключевых моментов совершенствования электронного бизнеса - это повышение гибкости процессов за счет ускорения реализации решений в области интеграции.
читать
Всего: 5

Rambler's Top100

   
   

новости

продукты

решения

услуги

о компании

   
   
125315, Москва, Часовая ул., д.30
Телефон: (095)797-32-82; Факс: (095)797-32-81
© 2005 ООО "Диона Холдинг"
Администратор: admin@dionaholding.ru