Aldeia RPG

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Suporte no desenvolvimento de jogos


+2
WillMaiaBR
Kotol
6 participantes

    [E.O 2.0] - Efeito de Transição de Mapa (v1.0)

    Kotol
    Kotol
    Iniciante
    Iniciante


    Mensagens : 43
    Créditos : 13

    [E.O 2.0] - Efeito de Transição de Mapa (v1.0) Empty [E.O 2.0] - Efeito de Transição de Mapa (v1.0)

    Mensagem por Kotol Seg Jun 07, 2021 7:09 am

    - Basicamente, quando você troca de mapa, há um efeito de "Arraste" do mapa atual que está, para o próximo, resultando em uma animação mais legal.

     Vamos ao tutorial, que é full "Client~Side".

    Abra seu "Client.Vbp" , e no final de "ModGlobals" adicione isto:

    Spoiler:

    Public InTransition As Boolean
    Public PicPerSec As Long

    Agora, em "ModGameLogic" , defina bem no início, ou abaixo de "Dim tmr10000 As Long" , isto:

    Spoiler:

    Dim MapTransitionTimer As Long

    Ainda em "ModGameLogic" , na SUB "GameLoop()" , procure por:

    Spoiler:

    If tmr25 < Tick Then

    E acima disto, adicione isto: 

    Spoiler:

    If InTransition = True Then
                
                'Check for counter
            If MapTransitionTimer < GetTickCount Then
                Select Case GetPlayerDir(MyIndex)
                    Case DIR_UP
                        PicPerSec = PicPerSec + 1
                        
                    Case DIR_DOWN
                        PicPerSec = PicPerSec - 1
                        
                    Case DIR_LEFT
                        PicPerSec = PicPerSec + 1
                        
                    Case DIR_RIGHT
                        PicPerSec = PicPerSec - 1
                        
                End Select
                MapTransitionTimer = GetTickCount + 50
            End If
                
                'Check for map value and correct all position
                Select Case GetPlayerDir(MyIndex)
                    Case DIR_UP
                        If PicPerSec >= TileView.Bottom Then
                        PicPerSec = TileView.Bottom
                        InTransition = False
                        End If
                    Case DIR_DOWN
                        If PicPerSec <= TileView.top Then
                        PicPerSec = TileView.top
                        InTransition = False
                        End If
                    Case DIR_LEFT
                        If PicPerSec > TileView.Right Then
                        PicPerSec = TileView.Right
                        InTransition = False
                        End If
                    Case DIR_RIGHT
                        If PicPerSec <= TileView.Left Then
                        PicPerSec = TileView.Left
                        InTransition = False
                        End If
                End Select
                
            End If

    Agora, em "ModDirectDraw7" , procure na SUB "Render_Graphics()" , procure por:

    Spoiler:

    ' fill it with black
    DDS_BackBuffer.BltColorFill rec_pos, 0


    E substitua por:

    Spoiler:

    ' fill it with black, but now when in transition
    If Not InTransition Then DDS_BackBuffer.BltColorFill rec_pos, 0


    Procure por:

    Spoiler:

    ' Lock the backbuffer so we can draw text and names
    TexthDC = DDS_BackBuffer.GetDC


    E substitua por:

    Spoiler:

    ' Lock the backbuffer so we can draw text and names, but not on transition
    If Not InTransition Then TexthDC = DDS_BackBuffer.GetDC


    Procure também por:

    Spoiler:

    ' Release DC
    DDS_BackBuffer.ReleaseDC TexthDC


    E substitua por:

    Spoiler:

    ' Release DC, but not when in transition
    If Not InTransition Then DDS_BackBuffer.ReleaseDC TexthDC


    Ainda em "ModDirectDraw7" , procure por "Public Sub UpdateCamera()" , e nesta SUB, subtitua isto:

    Spoiler:

            With TileView
                .top = StartY
                .Bottom = EndY
                .Left = StartX
                .Right = EndX
            End With
            
            With Camera
                .top = offsetY
                .Bottom = .top + ScreenY
                .Left = offsetX
                .Right = .Left + ScreenX
            End With

    Por isto: 

    Spoiler:

    'Transition system
        If InTransition Then
            Select Case GetPlayerDir(MyIndex)
                Case DIR_UP
                    With TileView
                        .top = (StartY + EndY) - PicPerSec
                        .Bottom = EndY
                        .Left = StartX
                        .Right = EndX
                    End With
                Case DIR_DOWN
                    With TileView
                        .top = StartY - PicPerSec
                        .Bottom = EndY
                        .Left = StartX
                        .Right = EndX
                    End With
                    With Camera
                        .top = offsetY
                        .Bottom = .top + ScreenY
                        .Left = offsetX
                        .Right = .Left + ScreenX
                    End With
                Case DIR_LEFT
                    With TileView
                        .top = StartY
                        .Bottom = EndY
                        .Left = (StartX + EndX) - PicPerSec
                        .Right = EndX
                    End With
                Case DIR_RIGHT
                    With TileView
                        .top = StartY
                        .Bottom = EndY
                        .Left = StartX - PicPerSec
                        .Right = EndX
                    End With
            End Select
            
            With Camera
                .top = offsetY
                .Bottom = .top + ScreenY
                .Left = offsetX
                .Right = .Left + ScreenX
            End With
        
        Else

            With TileView
                .top = StartY
                .Bottom = EndY
                .Left = StartX
                .Right = EndX
            End With
            
            With Camera
                .top = offsetY
                .Bottom = .top + ScreenY
                .Left = offsetX
                .Right = .Left + ScreenX
            End With
        
        End If

    Agora, vá até "ModHandleData" , e em "Sub HandleCheckForMap" , antes de:

    Spoiler:

    ' Error handler
        Exit Sub
    errorhandler:
        HandleError "HandleCheckForMap", "modHandleData", Err.Number, Err.Description, Err.Source, Err.HelpContext
        Err.Clear
        Exit Sub

    Adicione: 

    Spoiler:

    InTransition = True
        Select Case GetPlayerDir(MyIndex)
        Case DIR_UP
                PicPerSec = 0
        Case DIR_DOWN
                PicPerSec = Map.MaxY
        Case DIR_LEFT
                PicPerSec = 0
        Case DIR_RIGHT
                PicPerSec = Map.MaxX
        End Select

    Agora, em "ModGeneral" , na SUB "GameInit()" , procure por: 

    Spoiler:

    InTrade = False

    E adicione abaixo, isto:

    Spoiler:

    InTransition = False

    E por fim, em "ModInput" , na SUB "CheckInputKeys()",  abaixo de:

    Spoiler:

    ' If debug mode, handle error then exit out
        If Options.Debug = 1 Then On Error GoTo errorhandler

    Adicione isto:

    Spoiler:

    'Check for transition and block any movement
    If InTransition Then Exit Sub

    E pronto!! Agora você muda entre mapas, com efeito de transição!  Indignity




    Link de Demonstração: https://imgur.com/xEQMee4


    Pontos a considerar:
    - Versão 1.0;
    - Mapas sem tiles setados, como eu fiz ele não preencher o 'Backbuffer', deixa feio, ou seja, pra deixar bonitinho, é só ter ao menos um "ground" setado, que já faz a função;
    - Mapas menores indo para mapas maiores, perde-se posição(bug visual somente), mas funciona normal do maior para o menor;
    - Falta adicionar detalhes de conforto background como "Não ter transição quando editor de mapa for salvar mapa.." , mas são coisas que não influenciam na gameplay do jogador;

    Créditos
    Eu - lucas100vzs/Kotol


    Última edição por lucas100vzs em Ter Jun 08, 2021 4:17 pm, editado 1 vez(es)

    Valentine, JuanCollin, WillMaiaBR, Profane ~, Sonart e irintomaz gostam desta mensagem

    WillMaiaBR
    WillMaiaBR
    Iniciante
    Iniciante


    Mensagens : 61
    Créditos : 7

    Ficha do personagem
    Nível: 1
    Experiência:
    [E.O 2.0] - Efeito de Transição de Mapa (v1.0) Left_bar_bleue0/0[E.O 2.0] - Efeito de Transição de Mapa (v1.0) Empty_bar_bleue  (0/0)
    Vida:
    [E.O 2.0] - Efeito de Transição de Mapa (v1.0) Left_bar_bleue30/30[E.O 2.0] - Efeito de Transição de Mapa (v1.0) Empty_bar_bleue  (30/30)

    [E.O 2.0] - Efeito de Transição de Mapa (v1.0) Empty Re: [E.O 2.0] - Efeito de Transição de Mapa (v1.0)

    Mensagem por WillMaiaBR Seg Jun 07, 2021 11:36 am

    Vou testar aqui Lucas <3


    _________________
    [E.O 2.0] - Efeito de Transição de Mapa (v1.0) Logo_xstrond

    Kotol e irintomaz gostam desta mensagem

    Profane ~
    Profane ~
    Colaborador
    Colaborador


    Mensagens : 806
    Créditos : 128

    [E.O 2.0] - Efeito de Transição de Mapa (v1.0) Empty Re: [E.O 2.0] - Efeito de Transição de Mapa (v1.0)

    Mensagem por Profane ~ Ter Jun 08, 2021 8:34 am

    Parabéns. 

    Ver conteúdo novamente é sempre bom.

    Para uma versão 1.0 ta muito bom.


    _________________
    "Mistress of shattered hopes and forever broken dreams"

    Kotol e irintomaz gostam desta mensagem

    irintomaz
    irintomaz
    Novato
    Novato


    Mensagens : 2
    Créditos : 0

    [E.O 2.0] - Efeito de Transição de Mapa (v1.0) Empty Toppp

    Mensagem por irintomaz Sex Ago 06, 2021 1:36 am

    Gostei, vou até colocar no meu game para ver como fica.

    Kotol gosta desta mensagem

    irintomaz
    irintomaz
    Novato
    Novato


    Mensagens : 2
    Créditos : 0

    [E.O 2.0] - Efeito de Transição de Mapa (v1.0) Empty Re: [E.O 2.0] - Efeito de Transição de Mapa (v1.0)

    Mensagem por irintomaz Sex Ago 06, 2021 1:41 am

    @WillMaiaBR escreveu:Vou testar aqui Lucas <3
    Já ouvi falar desse seu nome ai, falaram bem a princípio kkk

    Kotol gosta desta mensagem

    avatar
    dnrock
    Novato
    Novato


    Mensagens : 7
    Créditos : 0

    [E.O 2.0] - Efeito de Transição de Mapa (v1.0) Empty Re: [E.O 2.0] - Efeito de Transição de Mapa (v1.0)

    Mensagem por dnrock Sab Ago 07, 2021 1:39 pm

    Parabéns Lucas
    uau, incrível vocês ainda desenvolverem para essa engine...
    eu era fanatico por isso em 2011, bons tempos, meus projetos nunca vingaram mas ficou experiencia...

    Kotol gosta desta mensagem

    JuanCollin
    JuanCollin
    Membro de Honra
    Membro de Honra


    Mensagens : 977
    Créditos : 94

    [E.O 2.0] - Efeito de Transição de Mapa (v1.0) Empty Re: [E.O 2.0] - Efeito de Transição de Mapa (v1.0)

    Mensagem por JuanCollin Dom Ago 08, 2021 7:24 pm

    Muito legal o efeito! Pra ficar perfeito, só se o mapa anterior movimentasse junto.

    Kotol gosta desta mensagem


    Conteúdo patrocinado


    [E.O 2.0] - Efeito de Transição de Mapa (v1.0) Empty Re: [E.O 2.0] - Efeito de Transição de Mapa (v1.0)

    Mensagem por Conteúdo patrocinado


      Data/hora atual: Qua Dez 08, 2021 6:58 am