게시판 제목 잘보고 올리세요 일반게시판에 홍보글 보이면 바로 회원 차단입니다

자동사냥 시 캐릭터만 이동하고 화면이 따라서 움직이지 않는 현상

컨텐츠 정보

본문

안녕하세요.
2.7 벚꽃팩(넬팩 기반?)을 가지고 조금씩 수정하면서 즐기고 있는데요.

자동 사냥이 없는 버전이라 직접 소스를 수정하면서 개발했는데 조금 이상한 현상이 있어서 질문 드리게 되었습니다.
일단 몬스터가 PC를 인식 -> 이동 -> 공격하는 코드를 참조해서 유사하게 자동 사냥 기능을 개발했고,
정상적으로 동작은 하는데 캐릭터만 움직일 뿐 화면이 캐릭터를 따라서 움직이지 않습니다.

그래서 아래 사진처럼 캐릭터가 화면의 우측 상단의 안보이는 위치(=힘업 버프 아이콘)까지 움직여버리게 됩니다.



화면 밖으로 이동해도 경험치는 잘 들어오고, 몹이 없을 시 텔레포트를 하게 되어 있어서 텔레포트를 하게 되면 다시 캐릭터가 정중앙으로 오게 되지만 시간이 지나면 또 이런 현상이 발생하게 됩니다.

몬스터 근처로 이동하는 로직은 아래와 같이 작성하였습니다.

--------------------------------------------------------------------
getMap().setPassable(getLocation(), true);

int nnx = getX() + nx;
int nny = getY() + ny;

if(this instanceof L1PcInstance) {
L1PcInstance pc = (L1PcInstance)this;
pc.getLocation().set(nnx, nny);
pc.sendPackets(new S_MoveCharPacket(pc));
//pc.sendPackets(new S_OwnCharPack(pc));
//pc.broadcastPacket(new S_MoveCharPacket(pc));

L1WorldTraps.getInstance().onPlayerMoved(pc);
} else {
setX(nnx);
setY(nny);
broadcastPacket(new S_MoveCharPacket(this));
}

getMap().setPassable(getLocation(), false);
--------------------------------------------------------------------

처음에는 몬스터의 이동 방식을 참고해서 broadcastPacket(new S_MoveCharPacket(this)); 를 사용했는데 PC 캐릭터가 움직이지 않아서 pc.sendPackets(new S_MoveCharPacket(pc)); 로 바꾸자 정상적으로 이동했는데 위에 설명드린 것처럼 화면은 고정되어 있습니다.

주석처리한 2줄(*.아래참고)처럼 이런저런 코드를 추가해봤는데 현상은 동일하더라고요.

//pc.sendPackets(new S_OwnCharPack(pc));
//pc.broadcastPacket(new S_MoveCharPacket(pc));

참고로 패킷을 보낼 때 S_MoveCharPacket 클래스의 OPCODE가 Opcodes.S_OPCODE_MOVEOBJECT (55) 인데 이거 외에 이동 관련한 다른 OPCODE를 찾아봐도 딱히 보이지를 않습니다.

고수분들의 조언 부탁 드리겠습니다.

관련자료

댓글 3
profile_image

얌야밍님의 댓글

서버사이드에서만 강제로 이동을 시키고
클라이언트는 이동을 안한 상태라서 화면 갱신이 안되고 있는거 같아요

화면 갱신을 처음 해주시고
시작한 위치를 저장 하시고
해당 위치를 벗어났는지 체크 후에 지속적으로 텔레포트 시켜서 화면 갱신을 시켜보세요
전체 1 / 1 페이지
번호
제목
이름

포인트 랭킹


알림 0