Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование в широком смысле слова > Физика

Ответ
 
Опции темы
Старый 24.05.2014, 22:06   #1
RegIon
Элита
 
Аватар для RegIon
 
Регистрация: 16.01.2010
Адрес: Новосибирск
Сообщений: 2,157
Написано 502 полезных сообщений
(для 1,012 пользователей)
Box2D персонаж

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

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

Более-менее рабочий код:
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 нету капсуля: прямоугольник, круг и полигон, - все для коллайда.

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

Можно конечно и кинематично сделать все, но тогда не так 'круто'.
__________________
Сайт: http://iexpo.ml
(Offline)
 
Ответить с цитированием
Старый 26.05.2014, 19:34   #2
RegIon
Элита
 
Аватар для RegIon
 
Регистрация: 16.01.2010
Адрес: Новосибирск
Сообщений: 2,157
Написано 502 полезных сообщений
(для 1,012 пользователей)
Ответ: Box2D персонаж

Зарешал. можно использовать kinematicbody и кривой рейкаст, тогда физика в принципе соблюдается
__________________
Сайт: http://iexpo.ml
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


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


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com