karmen1998
@karmen1998
Programmer

Как создать столкновение в игре марио слева и справа?

function Player(){
//baxum sharjum
	this.dynamic = $(".dynamic");
    this.directions = {};
    this.walls = [$(".pat2"),$(".pat3"),$(".pat4"),$(".pat5"),$(".pat6"),$(".pat7"),$(".pat8"),$(".pat9"),$(".pat10"),$(".pat11"),$(".pat12"),$(".pat13"),$(".pat14"),$(".pat15"),$(".pat16"),$(".pat17"),$(".pat18"),$(".pat19"),$(".pat20"),$(".pat21"),$(".pat22"),$(".pat23"),$(".pat24"),$(".pat25"),$(".pat26"),$(".pat27"),$(".pat28"),$(".pat29"),$(".pat30"),$(".pat31"),$(".pat32"),$(".pat33"),$(".pat34"),$(".pat35"),$(".pat36"),$(".pat37"),$(".pat38"),$(".pat39"),$(".pat40"),$(".pat42"),$(".pat43")];
    this.speedX = 4;
    this.speedY = 0;
    this.gravity = 0.2;
    this.jumpState = true;

    this.STATIC_HOR_CENTER;
    this.STATIC_VER_CENTER;

    this.WIDTH_DIFFERENCE;
    this.HEIGHT_DIFFERENCE;

    this.DYNAMIC_HOR_CENTER;
    this.DYNAMIC_VER_CENTER; 
   



    this.charMovement = function (e)
     {
        that.directions[e.which] = true;
        
     };
      this.stop =function(e)
       {
        delete that.directions[e.which];
         };
    

    this.checkCollisionup=function () {
        for (var i in this.walls) {
            this.STATIC_HOR_CENTER = this.walls[i].position().left+$(".home").position().left + this.walls[i].width()/2;
            this.STATIC_VER_CENTER = this.walls[i].position().top;

            this.WIDTH_DIFFERENCE = this.dynamic.width()/2 +this.walls[i].width()/2;
            
            this.DYNAMIC_HOR_CENTER = this.dynamic.position().left + this.dynamic.width()/2;
            this.DYNAMIC_VER_CENTER = this.dynamic.position().top + this.dynamic.height();
            if (Math.abs(this.DYNAMIC_HOR_CENTER - this.STATIC_HOR_CENTER) <= this.WIDTH_DIFFERENCE && Math.abs(this.DYNAMIC_VER_CENTER - this.STATIC_VER_CENTER) <= 5) {
                
                this.jumpState = false;
                this.dynamic.css("top", this.walls[i].position().top - this.dynamic.height());
                this.speedY = 9;
                break;

            }
          

            else {
                
                if (this.jumpState == false) {
                    this.speedY = 0;
                    this.jumpState = true;
                }
            }
        }
    }
    this.checkCollisiondown = function(){
        for (var i in this.walls) {
            this.STATIC_HOR_CENTER = this.walls[i].position().left+$(".home").position().left + this.walls[i].width()/2;
            this.STATIC_VER_CENTER = this.walls[i].position().top+this.dynamic.height()/2;

            this.WIDTH_DIFFERENCE = this.dynamic.width()/2 +this.walls[i].width()/2;
            this.HEIGHT_DIFFERENCE = this.dynamic.height()/2 +this.walls[i].height()/2;
            
            this.DYNAMIC_HOR_CENTER = this.dynamic.position().left + this.dynamic.width()/2;
            this.DYNAMIC_VER_CENTER = this.dynamic.position().top + this.dynamic.height()/2;
          if (Math.abs(this.DYNAMIC_HOR_CENTER - this.STATIC_HOR_CENTER) <= this.WIDTH_DIFFERENCE && Math.abs(this.DYNAMIC_VER_CENTER - this.STATIC_VER_CENTER) <= 5)
              {   
                
                this.speedX = 4;
               
            }        
      
            }
    }
    
    var that = this;

    this.move=function (e) {
    	for (var i in this.directions) {
    		if (this.dynamic.position().left > 0 && i == 37)
             {
    			if(this.dynamic.position().left <= 400 && $(".home").position().left<=0){
    				$(".home").css("left", ($(".home").position().left + this.speedX) + "px");
    			}
    			else {
    				this.dynamic.css("left", (this.dynamic.position().left - this.speedX) + "px");

    			}

    		}
    		if (this.dynamic.position().left < ($(".home").width() - this.dynamic.width()) && i == 39) {
    			if(this.dynamic.position().left >= 800){
    				$(".home").css("left", ($(".home").position().left - this.speedX) + "px");
    			}
    			else {
    				this.dynamic.css("left", (this.dynamic.position().left + this.speedX) + "px");

    			}
    		}

    		if (this.dynamic.position().top > 0 && i == 38 && this.jumpState == false) {
    			this.jumpState = true;
                this.dynamic.css("top", this.dynamic.position().top -6);
    		}
    		
    	}
 

    }
    
    this.jump =function () {
        if (this.jumpState) {
            if (this.speedY > -9) {
                this.speedY -= this.gravity;
            }
            this.dynamic.css("top", this.dynamic.position().top - this.speedY);
        }
    }

};


// ------------------------------Tshnami----------------------------------------------------

function Enemy(){

}
  • Вопрос задан
  • 131 просмотр
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы