Комментарии к дневнику

  1. Аватар для Andrew
    Вот что у меня вышло со скролингом.
    http://redcode.do.am/FlaP01.swf
  2. Аватар для Andrew
    не, не сработает. вопервых jumpForce = jumpForce * airResistance; сработает только тогда, когда нажата клавиша Вверх. Во вторых jumpForce это не сила прыжка, вопрёки названию, а сколько пиклелей осталось подниматься. Вот часть из физикАпдэйт
    PHP код:
    if (jumpForce>0) {
            
    airdir "jumping";
            
    hero._y -= (1/(gravitation/80)*jumpSpeed);
            
    jumpForce -= jumpSpeed;
        } 
  3. Аватар для Рыб
    PHP код:
    function inputUpdate(){
        
    isMoving false;
        if (
    Key.isDown(Key.ESCAPE)) {
            
    _parent.gotoAndStop(2);
        }
        if (
    Key.isDown(Key.LEFT)) {
            if (
    onGraund1) {
                
    isMoving true;
            }
            
    dir "left";
            
    movingSpeed = -maxMovingSpeed// Движемся влево
        
    }
        if (
    Key.isDown(Key.RIGHT)) {
            if (
    onGraund1) {
                
    isMoving true;
            }
            
    dir "right";
            
    movingSpeed = (1) * maxMovingSpeed// вправо, хотя вроде наоборот
        
    }
        if (
    Key.isDown(Key.UP)) {
            if  (
    onGraund1 == true)){ // если мы стоит на земле, то толчок
            
    airdir "jumping";
            
    jumpForce maxJumpForce;
         }
         
    jumpForce jumpForce airResistance// неспеша уменшаем силу прыжка за счет ситы трения
        
    }
        
    hero._x += movingSpeed;
        
    movingSpeed movingSpeed 0.96// тормазим 

    Добавь
    var airResistance = 0.96 // трение воздуха(кооэфицент тормажения)
    правдп что будет с падением я даже прикинуть не могу.
    Обновлено 10.02.2012 в 22:10 Рыб
  4. Аватар для Andrew
    пишу скрипт в хад для того чтобы узнать фпс. Потом попробую перенести двиг на ас3(это был ас2) и посмотреть, увеличится ли фпс.
  5. Аватар для Andrew
    Всё исправил. Выглядит классно. Можешь попробовать прикрутить это к прыжку(я тоже буду пробовать)?
    PHP код:
    //can change
    var gravitation 80;
    var 
    maxJumpForce 96;
    var 
    jumpSpeed 2;
    var 
    fallSpeed 2;
    var 
    maxMovingSpeed 2;

    //not change
    var isMoving false;
    var 
    dir "right";
    var 
    airdir "graund";
    var 
    jumpForce 0;
    var 
    onGraund1 false;
    var 
    movingSpeed 0;
    var 
    liftSize 144;
    var 
    platformsArr = [];
    var 
    platformsCount 0;
    var 
    liftsArr = [];
    var 
    liftsCount 0;
    var 
    liftsStatus 0;
    var 
    liftsStatus1 0;

    function 
    spritesUpdate() {
        if (
    airdir == "graund") {
            if (
    isMoving == false) {
                if (
    dir == "right") {
                    
    hero.gotoAndStop(1);
                } else {
                    
    hero.gotoAndStop(2);
                }
            } else {
                if (
    dir == "right") {
                    
    hero.gotoAndStop(3);
                } else {
                    
    hero.gotoAndStop(4);
                }
            }
        }
        if (
    airdir == "jumping") {
            if (
    dir == "right") {
                
    hero.gotoAndStop(5);
            } else {
                
    hero.gotoAndStop(6);
            }
        }
        if (
    airdir == "falling") {
            if (
    dir == "right") {
                
    hero.gotoAndStop(7);
            } else {
                
    hero.gotoAndStop(8);
            }
        }
    }
    function 
    inputUpdate(){
        
    isMoving false;
        if (
    Key.isDown(Key.ESCAPE)) {
            
    _parent.gotoAndStop(2);
        }
        if (
    Key.isDown(Key.LEFT)) {
            if (
    onGraund1) {
                
    isMoving true;
            }
            
    dir "left";
            
    movingSpeed = -maxMovingSpeed// Движемся влево
        
    }
        if (
    Key.isDown(Key.RIGHT)) {
            if (
    onGraund1) {
                
    isMoving true;
            }
            
    dir "right";
            
    movingSpeed = (1) * maxMovingSpeed// вправо, хотя вроде наоборот
        
    }
        if ((
    Key.isDown(Key.UP)) and (onGraund1 == true)) {
            
    airdir "jumping";
            
    jumpForce maxJumpForce;
        }
        
    hero._x += movingSpeed;
        
    movingSpeed movingSpeed 0.96// тормазим 
    }
    function 
    physicUpdate() {
        if(
    liftsStatus1==liftSize){
            
    liftsStatus 2;
        }
        if(
    liftsStatus1==0){
            
    liftsStatus 1;
        }
        if(
    liftsStatus==1){
            
    liftsStatus1+=1;
            for(
    i=1;i<=liftsCount;i++){
                
    liftsArr[i]._y-=1;
            }
        } else {
            
    liftsStatus1-=1;
            for(
    i=1;i<=liftsCount;i++){
                
    liftsArr[i]._y+=1;
            }
        }
        
    onGraund1 false;
        for(
    i=1;i<=platformsCount;i++){
            if(
    hero.mu.hitTest(platformsArr[i])){
                
    jumpForce 0;
            }
            if(
    hero.md.hitTest(platformsArr[i])){
                
    onGraund1 true;
            }
            if(
    hero.mr.hitTest(platformsArr[i])){
                
    hero._x-=maxMovingSpeed;
                
    movingSpeed 0;
            }
            if(
    hero.ml.hitTest(platformsArr[i])){
                
    hero._x+=maxMovingSpeed;
                
    movingSpeed 0;
            }
        }
        for(
    i=1;i<=liftsCount;i++){
            if(
    hero.mu.hitTest(liftsArr[i])){
                
    jumpForce 0;
            }
            if(
    hero.md.hitTest(liftsArr[i])){
                
    onGraund1 true;
                if(
    liftsStatus==2){
                    
    hero._y+=1;
                } else {
                    
    hero._y-=1;
                }
            }
            if(
    hero.mr.hitTest(liftsArr[i])){
                
    hero._x-=maxMovingSpeed;
                
    movingSpeed 0;
            }
            if(
    hero.ml.hitTest(liftsArr[i])){
                
    hero._x+=maxMovingSpeed;
                
    movingSpeed 0;
            }
        }
        if ((
    jumpForce == 0) and (onGraund1 == false)) {
            
    hero._y += (gravitation/80)*fallSpeed;
        }
        if (
    onGraund1 == true) {
            
    airdir "graund";
        } else {
            if (
    jumpForce>0) {
                
    airdir "jumping";
            } else {
                
    airdir "falling";
            }
        }
        if (
    hero._x<0) {
            
    hero._x 0;
        }
        if (
    hero._x>640-hero._width) {
            
    hero._x 640-hero._width;
        }
        if (
    jumpForce<0) {
            
    jumpForce 0;
        }
        if (
    jumpForce>0) {
            
    airdir "jumping";
            
    hero._y -= 1/(gravitation/80)*jumpSpeed;
            
    jumpForce -= jumpSpeed;
        }
    }
    function 
    drawHUD() {
        
    grav.text "Gravitation: "+gravitation;
        
    stat.text "Status: "+dir+" & "+airdir;
        
    sp.text "Jump Speed: "+jumpSpeed;
        
    jf.text "Jump Force: "+maxJumpForce;
        
    spg.text "Moving Speed: "+maxMovingSpeed;
    }

    onEnterFrame = function () {
        
    inputUpdate();
        
    physicUpdate();
        
    spritesUpdate();
        
    drawHUD();
    }; 
  6. Аватар для Рыб
    Проблема, это "скольжение"? Если да, то регулируется изменением кооэфицента(можешь добавить его на HUD) 0.98
    хотя нет, абракадабра тврится когда перс смотрит влево
  7. Аватар для Andrew
  8. Аватар для Andrew
  9. Аватар для Andrew
    да, там наоборот. где (-1) должно быть 1. А там где ничего должно быть -1;
    плюс ты не написал hero._x += movingSpeed;
    но появилась проблема.
    http://redcode.do.am/FlaPb.swf
  10. Аватар для Рыб
    Код:
    function inputUpdate(){
    	isMoving = false;
    	if (Key.isDown(Key.ESCAPE)) {
    		_parent.gotoAndStop(2);
    	}
    	if (Key.isDown(Key.LEFT)) {
    		if (onGraund1) {
    			isMoving = true;
    		}
    		dir = "left";
    		movingSpeed = maxMovingSpeed // Движемся влево
    	}
    	if (Key.isDown(Key.RIGHT)) {
    		if (onGraund1) {
    			isMoving = true;
    		}
    		dir = "right";
    		movingSpeed = (-1) * maxMovingSpeed // вправо, хотя вроде наоборот
    	}
    	if ((Key.isDown(Key.UP)) and (onGraund1 == true)) {
    		airdir = "jumping";
    		jumpForce = maxJumpForce;
    	}
    	movingSpeed = movingSpeed * 0.98 // тормазим 
            hero._x += movingSpeed // Вот эту строку забыли
    }
    Как-то так.
  11. Аватар для Рыб
    А перемещение героя у тебя в physicUpdate или в inputUpdate)
  12. Аватар для Andrew
    не двигается он теперь. Ищу причину.
  13. Аватар для Рыб
    Ввел еще одну меременную maxMovingSpeed, которая есть значение скорости из HUD.
    physicUpdate довольно тяжело читается, скажу честно я там потерялся)
  14. Аватар для Рыб
    Код:
    function inputUpdate(){
    	isMoving = false;
    	if (Key.isDown(Key.ESCAPE)) {
    		_parent.gotoAndStop(2);
    	}
    	if (Key.isDown(Key.LEFT)) {
    		if (onGraund1) {
    			isMoving = true;
    		}
    		dir = "left";
    		movingSpeed = maxMovingSpeed // Движемся влево
    	}
    	if (Key.isDown(Key.RIGHT)) {
    		if (onGraund1) {
    			isMoving = true;
    		}
    		dir = "right";
    		movingSpeed = (-1) * maxMovingSpeed // вправо, хотя вроде наоборот
    	}
    	if ((Key.isDown(Key.UP)) and (onGraund1 == true)) {
    		airdir = "jumping";
    		jumpForce = maxJumpForce;
    	}
    	movingSpeed = movingSpeed * 0.98 // тормазим 
    }
    Как-то так.
  15. Аватар для Andrew
    Наверно нужно физику периписать.
    По крайней мере
    if (hero._x<0) {
    hero._x = 0;
    }
    if (hero._x>640-hero._width) {
    hero._x = 640-hero._width;
    }
    нужно убрать.
  16. Аватар для Andrew
    Про физику, совет: самое простое сделат физику по такому приципу: если клавиша нажата movingspeed="заданому значению", если клавиша не нажата то movingspeed=movingspeed*"коэфицет трения"... по тому самому принципу и с прыжками.
    Это добавить планости
    Я пытался сделать похоже но у меня не получалось.
    Вот моя "физика":
    Код:
    function physicUpdate() {
    	if(liftsStatus1==liftSize){
    		liftsStatus = 2;
    	}
    	if(liftsStatus1==0){
    		liftsStatus = 1;
    	}
    	if(liftsStatus==1){
    		liftsStatus1+=1;
    		for(i=1;i<=liftsCount;i++){
    			liftsArr[i]._y-=1;
    		}
    	} else {
    		liftsStatus1-=1;
    		for(i=1;i<=liftsCount;i++){
    			liftsArr[i]._y+=1;
    		}
    	}
    	onGraund1 = false;
    	for(i=1;i<=platformsCount;i++){
    		if(hero.mu.hitTest(platformsArr[i])){
    			jumpForce = 0;
    		}
    		if(hero.md.hitTest(platformsArr[i])){
    			onGraund1 = true;
    		}
    		if(hero.mr.hitTest(platformsArr[i])){
    			hero._x-=movingSpeed+onGraund1/2;
    		}
    		if(hero.ml.hitTest(platformsArr[i])){
    			hero._x+=movingSpeed+onGraund1/2;
    		}
    	}
    	for(i=1;i<=liftsCount;i++){
    		if(hero.mu.hitTest(liftsArr[i])){
    			jumpForce = 0;
    		}
    		if(hero.md.hitTest(liftsArr[i])){
    			onGraund1 = true;
    			if(liftsStatus==2){
    				hero._y+=1;
    			} else {
    				hero._y-=1;
    			}
    		}
    		if(hero.mr.hitTest(liftsArr[i])){
    			hero._x-=movingSpeed+onGraund1/2;
    		}
    		if(hero.ml.hitTest(liftsArr[i])){
    			hero._x+=movingSpeed+onGraund1/2;
    		}
    	}
    	if ((jumpForce == 0) and (onGraund1 == false)) {
    		hero._y += (gravitation/80)*fallSpeed;
    	}
    	if (onGraund1 == true) {
    		airdir = "graund";
    	} else {
    		if (jumpForce>0) {
    			airdir = "jumping";
    		} else {
    			airdir = "falling";
    		}
    	}
    	if (hero._x<0) {
    		hero._x = 0;
    	}
    	if (hero._x>640-hero._width) {
    		hero._x = 640-hero._width;
    	}
    	if (jumpForce<0) {
    		jumpForce = 0;
    	}
    	if (jumpForce>0) {
    		airdir = "jumping";
    		hero._y -= 1/(gravitation/80)*jumpSpeed;
    		jumpForce -= jumpSpeed;
    	}
    }
    А вот про клавиши:
    Код:
    function inputUpdate(){
    	isMoving = false;
    	if (Key.isDown(Key.ESCAPE)) {
    		_parent.gotoAndStop(2);
    	}
    	if (Key.isDown(Key.LEFT)) {
    		if (onGraund1) {
    			isMoving = true;
    		}
    		dir = "left";
    		hero._x -= movingSpeed+onGraund1/2;
    	}
    	if (Key.isDown(Key.RIGHT)) {
    		if (onGraund1) {
    			isMoving = true;
    		}
    		dir = "right";
    		hero._x += movingSpeed+onGraund1/2;
    	}
    	if ((Key.isDown(Key.UP)) and (onGraund1 == true)) {
    		airdir = "jumping";
    		jumpForce = maxJumpForce;
    	}
    }
  17. Аватар для Andrew
    Да, это так. Но ничего поделать не могу. Это есть в почти каждом движке. И я не знаю как это исправить. Думаю на скроллом.
  18. Аватар для Рыб
    Про физику, совет: самое простое сделат физику по такому приципу: если клавиша нажата movingspeed="заданому значению", если клавиша не нажата то movingspeed=movingspeed*"коэфицет трения"... по тому самому принципу и с прыжками.
    Это добавить планости
  19. Аватар для Рыб
    При выставлении скорости большей размеров препятсвия(около 20), появляется возможность "пробивать" их...
  20. Аватар для Andrew
    а что насчёт телефонов и коммерции