사생활 보호 설정
https://gamjia.tistory.com
Updated News
Mini Rooms
답글수 [0]
What Friends Say
한마디로 표현해봐~
1촌평 관리
Cocos Creator getLinearVelocity
GamJia 2024. 8. 26. 10:45
객체의 선형 속도를 보고 싶어서
console창에 getLinearVelocity를 넣었는데
Undefined가 뜨길래
내용을 좀 바꿨더니 제대로 출력된걸 확인했다
둘이 같아보이는데 뭐가 다른걸까?
const velocity = this.rigidBody.getLinearVelocity(new Vec3()); console.log("Velocity:", velocity);
일단 이건 new Vec3() 객체를 생성한 후,
이 객체를 getLinearVelocity 메소드의 인자로 전달하고
getLinearVelocity 메소드가 반환하는 값을
velocity에 저장하는 내용이다
이 방식은 getLinearVelocity 메소드가
Vec3 객체를 반환할 것이라는 가정하에
사용되는데 이 경우에 velocity 변수는
getLinearVelocity 메소드가 반환한
Vec3 객체를 가리키게 된다
근데 만약에 getLinearVelocity 메소드가
실제 반환값이 void인 메소드라면
velocity 변수에는 아무런 값이 할당되지 않거나
이미지처럼 undefined가 할당될 수 있다
흠..
https://github.com/cocos/cocos-engine/blob/2fda22be5638065a190bc4c97da6548631319aba/cocos2d/core/3d/physics/framework/components/rigid-body-component.ts#L488
cocos-engine/cocos2d/core/3d/physics/framework/components/rigid-body-component.ts at 2fda22be5638065a190bc4c97da6548631319aba ·
Cocos simplifies game creation and distribution with Cocos Creator, a free, open-source, cross-platform game engine. Empowering millions of developers to create high-performance, engaging 2D/3D gam...
github.com
const velocity = new Vec3(); this.rigidBody.getLinearVelocity(velocity); console.log("Velocity:", velocity);
두번째는 velocity라는 Vec3객체를 생성한 뒤에
velocity 객체를 getLinearVelocity
메소드에 인자로 전달한다
getLinearVelocity 메소드는
이 메소드 velocity 객체의 값을 직접 수정해,
그 객체의 선형 속도를 조절하게 된다
이 방식은 getLinearVelocity 메소드가 전달된
Vec3 객체를 수정하여 선형속도를 설정하는
메소드라는 가정하에 사용할 수 있다
여기서는 반환값이 중요하지 않으며
전달된 객체(velocity)의 상태가 바뀌는 것에
초점을 맞추게 된다
첫번째 코드는 getLinearVelocity 메소드가
값을 반환한다고 가정하고 그 반환값을 사용
두번째 코드는 getLinearVelocity 메소드가
전달된 객체를 수정하는 메소드로 간주하고
반환값이 아닌 매개변수로 전달된 객체를 사용한다
그래서 getLinearVelocity 메소드가 어떤 값을
반환하지 않고 전달된 객체를 수정하는 메소드라면
두번째 방법을 사용하는게 맞다
그래서 두번째 코드로 입력했을 때
제대로 된 값이 출력될 수 있었던 것이다