forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Физика (http://forum.boolean.name/forumdisplay.php?f=101)
-   -   Box2D персонаж (http://forum.boolean.name/showthread.php?t=19189)

RegIon 24.05.2014 22:06

Box2D персонаж
 
Никак не могу прикинуть как в Love2D с Box2D нормально сделать физический персонаж.
Просто я хочу, что бы перст был как перс для платформера, но с учетом физики.

Проблема в том, что:
1. Он скользит
2. Не падает кирпичом с обрыва, а по дуге, так как скорость горизонтальная остается.
3. Толкает физ объекты как сверхсильный.

Более-менее рабочий код:
PHP код:

function playerRayCast(f,x,y,nx,ny,d)
    
player.ground=0
    
if(d<0.1then --земля
      player
.ground=1
    end
return 0
end

function updPlayer()
  
local touch love.touch
  local imx
=0
  local jump 
0
  
  local px 
player.body:getX()
  
local py player.body:getY()
  --
player.ground 0
  world
:rayCast(px-player.w/2,py+player.h/2px-player.w/2py+player.hplayerRayCast)
  
world:rayCast(px+player.w/2,py+player.h/2px+player.w/2py+player.hplayerRayCast)
  
  
  if(
touchthen
    tc 
touch.getTouchCount()
    if(
tc>and player.ground==then 
        
for i=1tc do
            
local i,x,y,touch.getTouch(i)
            
y*SCR_H
            imx 
= -2*(0.5 x)
            if(
y>100 and y<200 then
                jump
=1
            end
        end
    end
  end
 kid
=love.keyboard.isDown
 
 
if(player.ground==1then 
     
if(kid("left"))then imx=-1 end 
     
if(kid("right"))then imx=1 end
     
if(kid("up"))then jump 1 end
 end
 
    lx
ly player.body:getLinearVelocity() --хз как парабалический прыжок сделать

    
if(imx~=or jump==1then 
        player
.body:setLinearVelocity(player.speed*imx,ly-player.speed*1.5*jump)    
    
end
 
end 


Проблема в том, что в Box2D под Love только мировой рейкаст для всех объектов, из-за этого как-то криво перехватываться он.
Так же порой вертикальная скорость не равна нулю, а дрыгается вокруг него.
Так же в Box2d нету капсуля: прямоугольник, круг и полигон, - все для коллайда.

Трудно адаптироваться с Юнити.

Можно конечно и кинематично сделать все, но тогда не так 'круто'.

RegIon 26.05.2014 19:34

Ответ: Box2D персонаж
 
Зарешал. можно использовать kinematicbody и кривой рейкаст, тогда физика в принципе соблюдается


Часовой пояс GMT +4, время: 08:12.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot