숭실대 프로젝트 아나키 워크샵 part2

70
Havok Confidential. © Copyright 2012 Havok.com (or its licensors). All Rights Reserved. Confidential Information of Havok. 1 Havok Physics Primer Field Application Engineer Alex Kang

Upload: alex-kang

Post on 26-May-2015

226 views

Category:

Education


5 download

DESCRIPTION

물리엔진의 이해 vForge 에서의 물리 강체 설정 방법 물리가 적용된 젠가 게임 만들기

TRANSCRIPT

Page 1: 숭실대 프로젝트 아나키 워크샵 part2

Havok Confidential. © Copyright 2012 Havok.com (or its licensors). All Rights Reserved. Confidential Information of Havok. 1

Havok Physics Primer

Field Application Engineer Alex Kang

Page 2: 숭실대 프로젝트 아나키 워크샵 part2

Havok Confidential. © Copyright 2012 Havok.com (or its licensors). All Rights Reserved. Confidential Information of Havok. 5

아이작 뉴턴

(1643~1727)

운동의 제1법칙 ( 관성의 법칙)

운동의 제2법칙 (가속도의 법칙)

운동의 제3법칙 (작용 반작용의 법칙)

만유인력의 법칙

F: 힘, m: 질량, a:가속도

[1687, Principia]

Physics - Dynamics

뉴턴 역학 (Newtonian Mechanics)

Page 3: 숭실대 프로젝트 아나키 워크샵 part2

Havok Confidential. © Copyright 2012 Havok.com (or its licensors). All Rights Reserved. Confidential Information of Havok. 6

Physics Engine

강체 (Rigid Body) 시뮬레이션

동역학 (Dynamics) 시뮬레이션

물리적인 속성들 (Physical Properties)

충돌 처리 (Collision Detection)

Constraint Systems

Page 4: 숭실대 프로젝트 아나키 워크샵 part2

Havok Confidential. © Copyright 2012 Havok.com (or its licensors). All Rights Reserved. Confidential Information of Havok. 7

Rigid Body Simulation

Rigid Body, 절대로 형태가 변하지 않는 단단한 물체

Page 5: 숭실대 프로젝트 아나키 워크샵 part2

Havok Confidential. © Copyright 2012 Havok.com (or its licensors). All Rights Reserved. Confidential Information of Havok. 8

Rigid Body Simulation

지형(Landscape)은 변하지 않음

Page 6: 숭실대 프로젝트 아나키 워크샵 part2

Havok Confidential. © Copyright 2012 Havok.com (or its licensors). All Rights Reserved. Confidential Information of Havok. 9

Rigid Body Simulation

단순화된 Collision geometry(Shape) 을 사용

Page 7: 숭실대 프로젝트 아나키 워크샵 part2

Havok Confidential. © Copyright 2012 Havok.com (or its licensors). All Rights Reserved. Confidential Information of Havok. 10

Rigid Body Simulation

속도를 위해 물리 연산이 비활성화 되기도 함

(Simulation Island)

Page 8: 숭실대 프로젝트 아나키 워크샵 part2

Havok Confidential. © Copyright 2012 Havok.com (or its licensors). All Rights Reserved. Confidential Information of Havok. 11

Dynamics Simulation

연속적인 이동 경로를 일정한 시간 주기로 나누어서 Collision detection 계산

Continuous Discrete

Page 9: 숭실대 프로젝트 아나키 워크샵 part2

Havok Confidential. © Copyright 2012 Havok.com (or its licensors). All Rights Reserved. Confidential Information of Havok. 13

Dynamics Simulation

Iterations (sub-time-steps)

– physics simulation은 화면 갱신 주기보다 자주 발생됨

– sub-steps 는 조절 가능

Accumulation of error

– 다음 step 계산시 바로 직전

Step 만을 참조 한다.

(= Full history 가 아님)

Page 10: 숭실대 프로젝트 아나키 워크샵 part2

Havok Confidential. © Copyright 2012 Havok.com (or its licensors). All Rights Reserved. Confidential Information of Havok. 14

Physical Properties

질량 (Mass)

– 물체를 움직이게 하는데 필요한 힘의 크기

Page 11: 숭실대 프로젝트 아나키 워크샵 part2

Havok Confidential. © Copyright 2012 Havok.com (or its licensors). All Rights Reserved. Confidential Information of Havok. 15

Physical Properties

정지 마찰계수 (Static friction)

– 정지된 상태의 물체가 미끌어지지 않도록 막는 힘

– 물체가 안정적으로 붙어 있게 해주는 주요 속성

운동 마찰계수 (Dynamic friction)

– 바닥에 붙은채 움직이는 물체에 작용하는 마찰 계수

[Friction Demo]

Page 12: 숭실대 프로젝트 아나키 워크샵 part2

Havok Confidential. © Copyright 2012 Havok.com (or its licensors). All Rights Reserved. Confidential Information of Havok. 16

Physical Properties

반발계수,복원력 (Restitution)

– 충돌이 발생된 후 보존되는 에너지의 양

– 0 ~ 1.98 사이의 값으로 입력 가능

Restitution 을 1.98로 설정한 경우 충돌 후에도 힘을 거의 상실하지 않는다

Restitution 을 0로 설정하면 충돌 직후 힘을 모두 상실하면서 멈추게 된다.

Page 13: 숭실대 프로젝트 아나키 워크샵 part2

Havok Confidential. © Copyright 2012 Havok.com (or its licensors). All Rights Reserved. Confidential Information of Havok. 17

Physical Properties

Center of mass (COM)

Page 14: 숭실대 프로젝트 아나키 워크샵 part2

Havok Confidential. © Copyright 2012 Havok.com (or its licensors). All Rights Reserved. Confidential Information of Havok. 18

Inertia Tensor

– 회전 속도의 변화에 대한 저항값

Physical Properties

Inertia Tensor Scaling 을 0.001 로 낮은 값으로 지정 하면 충돌로 이후 더욱 빠르게 회전한다

Page 15: 숭실대 프로젝트 아나키 워크샵 part2

Havok Confidential. © Copyright 2012 Havok.com (or its licensors). All Rights Reserved. Confidential Information of Havok. 19

Collision Detection

물리 엔진의 핵심 코어

최적화를 위해 여러 단계를 거쳐서 처리

– Broadphase: 더 상세한 충돌 처리 단계로 넘어가기전 AABB 를 사용 해서 대부분의 오브젝트를 제거하는 과정

– Midphase: 충돌 처리를 위한 연산의 복잡도를 낮추는 과정

– Narrowphase: 실제 오브젝트 간의 Distance 계산이 이루어짐

Narrowphase 에서의 오브젝트 쌍의 개수에 의해 Performance가 결정됨

Page 16: 숭실대 프로젝트 아나키 워크샵 part2

Havok Confidential. © Copyright 2012 Havok.com (or its licensors). All Rights Reserved. Confidential Information of Havok. 20

Collision Detection

Broadphase 간단한 AABB 연산

을 통해 가능한 많은

오브젝트를 제거함

Page 17: 숭실대 프로젝트 아나키 워크샵 part2

Havok Confidential. © Copyright 2012 Havok.com (or its licensors). All Rights Reserved. Confidential Information of Havok. 21

Collision Detection

Midphase 복잡한 오브젝트를 나누기 위해 BroadPhase에 비해 무거운 연산이 필요하게됨

– Example

Landscape 전체가 아닌

통나무와 충돌 가능성이

있는 일부 삼각형 만을 선별

Page 18: 숭실대 프로젝트 아나키 워크샵 part2

Havok Confidential. © Copyright 2012 Havok.com (or its licensors). All Rights Reserved. Confidential Information of Havok. 22

Collision Detection

Narrowphase 최종 충돌 여부를 판정하기 위해 거리 계산을 수행

Page 19: 숭실대 프로젝트 아나키 워크샵 part2

Havok Confidential. © Copyright 2012 Havok.com (or its licensors). All Rights Reserved. Confidential Information of Havok. 23

Collision Detection

Rigid bodies and collision geometries(Shape)

– 빠른 충돌 연산을 위해 적절한 Shape을 사용해야 한다

Triangle

Capsule

Cylinder

Page 20: 숭실대 프로젝트 아나키 워크샵 part2

Havok Confidential. © Copyright 2012 Havok.com (or its licensors). All Rights Reserved. Confidential Information of Havok. 25

Collision Detection

Convex hull shapes

그래픽 메쉬를 감싸는 “shrink wrap” Shape

Page 21: 숭실대 프로젝트 아나키 워크샵 part2

Havok Confidential. © Copyright 2012 Havok.com (or its licensors). All Rights Reserved. Confidential Information of Havok. 29

Collision Detection

Compound shapes

– convex list shapes 의 충돌 처리를 빠르게 하기 위해 추가적인 midphase 사용

– 계층적인 트리 구조

– Sub-object의 Instances 으로 메모리 절약 가능

Page 22: 숭실대 프로젝트 아나키 워크샵 part2

Havok Confidential. © Copyright 2012 Havok.com (or its licensors). All Rights Reserved. Confidential Information of Havok. 30

Collision Detection

Discrete Collision Detection의 한계

– Missed collisions

"bullet-through-paper„

– Interpenetration

오브젝트가 파묻힘

[Discrete vs Continuous Demo]

Page 23: 숭실대 프로젝트 아나키 워크샵 part2

Havok Confidential. © Copyright 2012 Havok.com (or its licensors). All Rights Reserved. Confidential Information of Havok. 31

Collision Detection

Discrete

Continuous

Integrate Collide

Penetration

acceptable.

=> Done.

Integrate Collide

Detect Penetration

Generate TOI

Solve TOI

Collision

Re-Integrate

Re-Collide

t0 t1

t0 t1

No TOIs

=> Done.

Page 24: 숭실대 프로젝트 아나키 워크샵 part2

Havok Confidential. © Copyright 2012 Havok.com (or its licensors). All Rights Reserved. Confidential Information of Havok. 32

짧은 시간안에 너무 많은 TOI가 반복되는 경우

Worst Case 에서 안정적인 퍼포먼스 와 표현의 정확도를 유지

[SqueezedBall Demo]

[Priority Demo]

Robust Continuous Physics

Page 25: 숭실대 프로젝트 아나키 워크샵 part2

Havok Confidential. © Copyright 2012 Havok.com (or its licensors). All Rights Reserved. Confidential Information of Havok. 33

Robustness in Worst Cases

Page 26: 숭실대 프로젝트 아나키 워크샵 part2

Havok Confidential. © Copyright 2012 Havok.com (or its licensors). All Rights Reserved. Confidential Information of Havok. 37

Constraint Systems

연결된 Rigid body 에서의 Constraint systems

– Springs

– Dashpots

– Gears

– Mechanical joints

– Limited motion

– Motorized motion

Ball and Socket Constraint

Page 27: 숭실대 프로젝트 아나키 워크샵 part2

Havok Confidential. © Copyright 2012 Havok.com (or its licensors). All Rights Reserved. Confidential Information of Havok. 40

Constraint Systems

다양하게 연결된 Constraint System 사례

[ArmConveyor Demo]

Page 28: 숭실대 프로젝트 아나키 워크샵 part2

Havok Confidential. © Copyright 2012 Havok.com (or its licensors). All Rights Reserved. Confidential Information of Havok. 41

Ragdoll

다이내믹한 Death 애니메이션 연출

Ragdoll on Stairs Demo

Page 29: 숭실대 프로젝트 아나키 워크샵 part2

Havok Confidential. © Copyright 2012 Havok.com (or its licensors). All Rights Reserved. Confidential Information of Havok. 43

안정적이면서도 빠른 충돌 처리

– Continuous Physics

– Constraint System

– Multi Thread 최적화

편리한 워크 플로우

– Visual Debugger

– 3ds Max, Maya, Softimage 플러그인

다양한 부가 기능

– Character Controllers

– Ragdoll

– Vehicle kit

Havok Physics?

Page 30: 숭실대 프로젝트 아나키 워크샵 part2

Havok Confidential. © Copyright 2012 Havok.com (or its licensors). All Rights Reserved. Confidential Information of Havok. 47

Character Controller

Character Controller

– State Machine

– Rigid Body or Proxy Version

– Fast Simplex Solver

[Character Proxy Demo] [Character Rigid Body Moving Demo]

Page 31: 숭실대 프로젝트 아나키 워크샵 part2

Havok Confidential. © Copyright 2012 Havok.com (or its licensors). All Rights Reserved. Confidential Information of Havok. 49

Vehicle Kit

Vehicle SDK

– 게임에 바로 적용이 가능한 차량 시뮬레이션

– 오토바이, 4륜 차량, 트럭, 기차 ..등

– 차량의 물리적인 특성을 조절 가능

Vehicles Comparison 데모

Page 32: 숭실대 프로젝트 아나키 워크샵 part2

Havok Confidential. © Copyright 2012 Havok.com (or its licensors). All Rights Reserved. Confidential Information of Havok. 50

Visual Debugger

물리 디버그 도구 Visual Debugger

– 네트워크로 연결을 사용한 원격 디버깅

– 장면의 물리적인 상태를 Recording / playback

– 원격 프로파일링 지원

[game client runtime] [Visual Debugger]

Page 33: 숭실대 프로젝트 아나키 워크샵 part2

Havok Confidential. © Copyright 2012 Havok.com (or its licensors). All Rights Reserved. Confidential Information of Havok. 51

Thank you

Find out more at www.havok.com

http://cafe.naver.com/visionengine

http://www.facebook.com/HavokKorea

http://www.youtube.com/user/HavokEnthusiast

http://www.youtube.com/user/havokchannel

http://software.intel.com/en-us/forums/havok

Page 34: 숭실대 프로젝트 아나키 워크샵 part2

HavokRigidBodyComponent

Page 35: 숭실대 프로젝트 아나키 워크샵 part2

Havok Rigid Body 컴포넌트

엔터티에 Havok Rigid Body 컴포넌트를 추가하면 물리를 적용할 수 있다

Page 36: 숭실대 프로젝트 아나키 워크샵 part2

Restitution: Defines how bouncy the Rigid Body is. 0 has no bounce, >0 increase more bounce. Default is 0.4.

입력 범위: 0 ~ 1.98

Restitution

Restitution 을 1.98로 설정한 경우 충돌 후에도 힘을 거의 상실하지 않는다

Restitution 을 0로 설정하면 충돌 직후 힘을 모두 상실하면서 멈추게 된다.

Page 37: 숭실대 프로젝트 아나키 워크샵 part2

Friction: Defines the Smoothness of the surface of this Rigid Body. 0 is smooth, >0 has more friction applied. Default is 0.5. (입력 범위: 0 ~ 1)

Friction

Friction 을 0 으로 설정하면 마찰력이 없어서 빠르게 미끄러 진다

Page 38: 숭실대 프로젝트 아나키 워크샵 part2

Dynamic: This motion type gives the Rigid body the ability to move around. It automatically selects the Sphere / Box Inertia motion type depending on the input Inertia value.

Box Inertia: This Motion type performs the simulation using a box inertia tensor.

Sphere Inertia: This Motion type performs the simulation using a sphere inertia tensor

Motion Type

Thin Box Inertia: This Motion type is the same as the Box Inertia, but is optimized for thin Boxes and has less stability problems.

Keyframed: This motion type can be moved and push other objects around.

Fixed: This motion type can collide with other Objects, but does not move around as it is Static.

Character: A specialized motion used for character controllers.

Fixed

Keyframed

Dynamic

Page 39: 숭실대 프로젝트 아나키 워크샵 part2

Linear Damping: Defines how strong the movement of this Rigid Body is reduced over time. Larger Values speed up the damping on the velocity of the rigid body. (입력 범위 : 0 ~ 1)

Linear Damping

Linear Damping 을 1 로 지정 하면 마찰력이 없는 상태에서도 속도가 빠르게 줄어든다

Page 40: 숭실대 프로젝트 아나키 워크샵 part2

Angular Damping: Defines how strong the rotation of this Rigid Body is reduced over time.

입력 범위: 0 ~ 1

Angular Damping

Angular Damping을 1 로 지정 하면 회전 속도가 빠르게 줄어든다

Page 41: 숭실대 프로젝트 아나키 워크샵 part2

ShapeType

Box Sphere Convex Hull

Capsule Cylinder Mesh File

Page 42: 숭실대 프로젝트 아나키 워크샵 part2
Page 43: 숭실대 프로젝트 아나키 워크샵 part2

Convex Hull

Page 44: 숭실대 프로젝트 아나키 워크샵 part2

Convex Hull

Page 45: 숭실대 프로젝트 아나키 워크샵 part2

Inertia Tensor Scaling • Factor to scale all components of the intertia tensor with.

• Increasing the inertia will increase the RB’s resistance to changes in angular momentum. (회전 속도의 변화에 대한 저항값)

• 입력 범위 : 0.001 ~ 1000

Inertia Tensor Scaling

Inertia Tensor Scaling 을 0.001 로 낮은 값으로 지정 하면 충돌로 이후 더욱 빠르게 회전한다

Page 46: 숭실대 프로젝트 아나키 워크샵 part2

Welding is used to reduce the Problem of objects bouncing

Vision is usually using Anti-Clockwise

Welding Type

바닥면의 WeldingType 을 None 으로 설정한 상태에서는 바닥 폴리곤의 경계부분 에서 공의 방향이 엉뚱한 곳으로 튀는 현상이 종종 발생 된다

Page 47: 숭실대 프로젝트 아나키 워크샵 part2

Welding 이슈 사례

박스 형태의 강체가 지면과 맞닿은 상태에서 이웃하는 폴리곤으로 이동 하던 중 4개의 Contact Point 중 한 개의 Contact Point 에서 Welding 이슈가 발생 했다

Page 48: 숭실대 프로젝트 아나키 워크샵 part2

Center of Mass

Center of Mass 설정 위치 Center of Mass 가 설정된 부분이 아래로 향하게 된다

Page 49: 숭실대 프로젝트 아나키 워크샵 part2

Havok_QualityType: Used to specify when to use continuous physics. This does not affect fixed motion type rigid bodies. The Default for this property is Auto for Automatic Assignment by motion type.

Continuous vs Discrete

노란색 박스는 Quality Type을 Bullet 으로 설정했기 때문에 Continuous Physics 가 적용 된다

Page 50: 숭실대 프로젝트 아나키 워크샵 part2

Havok Physics 패널 물리 시뮬레이션 활성화 버튼 과 물리 오브젝트의 종류별 디버그 모드 활성화 버튼

강체의 종류별로 충돌 처리 여부를 결정하기 위한 Collision Layer 설정 테이블

Page 51: 숭실대 프로젝트 아나키 워크샵 part2

Project Anarchy 엔진으로 Block Tower 게임 만들기

Page 52: 숭실대 프로젝트 아나키 워크샵 part2

{VisionSDK}\Data\Vision\Samples\Engine\BlockTower

C++ 구현 없이 Lua 스크립트 만으로 개발된 게임 샘플

게임 개발 경험이 없더라도 몇 시간 안에 제작이 가능

Havok™ Physics 의 물리 시뮬레이션을 활용

Block Tower tutorial video

Block Tower

Page 53: 숭실대 프로젝트 아나키 워크샵 part2

Grid , Snap Position 활성화

타일 편집 방식

Page 54: 숭실대 프로젝트 아나키 워크샵 part2

블록들의 초기 물리 상태 안정화 하기

• 물리 시뮬레이션 결과를 블록의 초기 위치로 저장

블록 쌓기

Page 55: 숭실대 프로젝트 아나키 워크샵 part2

Table (EntityShape) • Havok Rigid Body Component

Block (EntityShape) • Havok Rigid Body Component

• Lua Script Component - Pickable.lua

CameraPosition (CameraPositionShape)

Camera (EntityShape) • Look at target 으로 사용됨

• Orbit Camera Component

• Lua Script Component - PickUp.lua

• Lua Script Component - Camera.lua

SunLight (DynLightShape) • Mobile Shadow Map Component

Block Tower 장면 구성 요소

Page 56: 숭실대 프로젝트 아나키 워크샵 part2

프로젝트 아나키 Lua Scripting 소개

Page 57: 숭실대 프로젝트 아나키 워크샵 part2

SWIG stands for Simplified Wrapper and Interface Generator.

SWIG is an interface compiler that connects programs written in C/C++ with a variety of high-level programming languages such as Perl, Python, Ruby, Lua…

SWIG is free software and an all-volunteer effort.

Good for: • Rapid prototyping and testing.

• Systems integration.

• Construction of scripting language extension modules.

SWIG

Page 58: 숭실대 프로젝트 아나키 워크샵 part2

Important Note!

Vision using SWIG to wrap C++ classes in Lua, so all objects behave like pointers! • Eg. Assignment ( vector1 = vector2 ) will modify the pointer and

not the data.

대안은? • clone() method 활용 가능

• Eg. vector1 = vector2:clone()

Operators like '+', '-', '*', '/', etc. are safe because they generate a new instance for you: • Eg. vector1 = vector2 + vector3

SWIG

Page 59: 숭실대 프로젝트 아나키 워크샵 part2

You can use a Lua script in Project Anarchy for…

• The whole game – GameScript Present from initialization to de-initialization of the engine.

• The current scene – SceneScript From scene initialization to de-initialization.

• GUI actions Using callbacks like OnActive, OnClick, OnDoubleClick, …

• Any scene object by attaching the script component Also using callbacks: OnCreate, OnSerialize, OnThink, …

• Accessing native Objects from Script

• Calling Script Functions from native Code

Lua Scripting

Page 60: 숭실대 프로젝트 아나키 워크샵 part2

템플릿 코드 삽입

Lua Scripting

템플릿 코드 삽입 버튼을 누르고 자주 사용되는 함수를 선택해서 쉽게 함수를 추가 할 수 있다

Page 61: 숭실대 프로젝트 아나키 워크샵 part2

자동 완성

self 와 같이 미리 정의된 기호에 . 또는 : 을 입력하면 해당 객체가 가지고 있는 함수들을 선택해서 입력할 수 있다

CTRL+SPACE 를 눌러서 수동으로 자동 완성 기능을 사용할 수도 있다. 그리고 ESC 키를 누르면 닫히게 된다.

Page 62: 숭실대 프로젝트 아나키 워크샵 part2

Lua 도움말

도움말 버튼을 누르거나 단축키 F1 을 누르면 현재 선택한 스크립트에 해당되는 도움말이 자동으로 검색 된다

Page 63: 숭실대 프로젝트 아나키 워크샵 part2

When you need to test the contents of a variable or just insert a simple trace, printing to the screen can be a quick and simple method of feedback. To do so use the command: Debug:PrintLine("Hello World")

To join strings in the PrintLine method use the dot dot technique. local numProps = self:GetNumProperties();

Debug:PrintLine("The entity has " .. numProps .. " prop(s)")

When you need to print the contents of a vector use the tostring( var ) method. Debug:PrintLine("Setting a new property value...")

self:SetProperty("myProp", Vision.hkvVec3(1.2, 2.3, 3.4));

propVal = self:GetProperty("myProp");

Debug:PrintLine("The entity's new property value is: " .. tostring(propVal))

Debug Printing

Page 64: 숭실대 프로젝트 아나키 워크샵 part2

vRSD 를 이용한 Lua 스크립트 디버깅

Lua 스크립트 디버깅

Page 65: 숭실대 프로젝트 아나키 워크샵 part2

BlockTower 샘플 Lua Script 분석

Page 66: 숭실대 프로젝트 아나키 워크샵 part2

Block

Pickable.lua • 폴리곤 단위로 오브젝트 픽킹이 가능하도록 설정

• 블록들의 마찰력과 탄성을 랜덤 하게 설정

Camera

PickUp.lua • 마우스 , 터치 , RemoteInput Handling

• OnThink() – 오브젝트 픽킹 처리 및 Picking 된 Block을 X,Y 축으로 이동 , 삼각형 모양의 마우스 커서 그리기

Camera.lua • OnAfterSceneLoaded()

◦ 화면의 좌,우 구석을 터치했을 경우 CameraPosition을 바라본 채로 화면 회전

BlockTower 스크립트 구성

Page 67: 숭실대 프로젝트 아나키 워크샵 part2

멀티 플랫폼을 위한 입력 처리

Eg. 다양한 종류의 입력 장치를 동시에 지원하기 위해 입력 이벤트를 Jump 라는 공통 이벤트로 추상화

입력 처리

Jump

CT_KB_SPACE CT_MOUSE_LEFT_BUTTON CT_TOUCH_DOUBLE_TAP CT_PAD_LEFT_TRIGGER

Page 68: 숭실대 프로젝트 아나키 워크샵 part2

터치 입력 or 가속도 값을 PC에서 동작중인 게임으로 전달

• HTML5 기반 Web-App

• 디바이스에 별도 설치 불필요

방향키 입력을 위한 가상 thumbsticks

Remote Input Tutorial

vRemoteInput

Page 69: 숭실대 프로젝트 아나키 워크샵 part2

카메라 회전 로직 화면 가장 자리를 터치 or 마우스 우클릭시 CameraEntity

를 중심으로 궤도를 돌며 회전 된다

Camera.lua

X = 0.15 X = 0.85

Y = 0.15

Y = 0.85

Page 70: 숭실대 프로젝트 아나키 워크샵 part2

Pickup 로직

PickUp.lua

Start Point Moved Point

Moved Direction

Camera Position

Start Point

Moved Point

Moved Direction

Camera

Perspective View Top View