ហេតុអ្វីត្រូវប្រើ
Physics? សំរាប់ Physics ត្រូវបានគេប្រើជាទូទៅសំរាប់
កម្មវិធីដែលទាក់ទង់នឹង simulation of object ដែលធ្វើចលនា,
ប៉ះទង្គិច មានការ interact under varios physical forces ដូចជា
gravity។ សំរាប់ Corona SdK បានផ្តល់នូវភាពងាយស្រូលក្នុងការបន្ថែម
physics ទៅកាន់កម្មវិធីរបស់អ្នកបាន។ សំរាប់ការធ្វើការជាមួយនឹង
physics ត្រូវតែទាក់ទង់នឹង display objects។ ដែលវាអាចជា graphics objects, images, vector objects or
animated sprites អាចបង្កើតជាមួយនឹង physic បានហើយវានឹង
interact ជាមួយនឹង other objects នៅក្នុង
simulation
ចំនុចសំខាន់ះ
សូមមើលនៅចំនុចសំខាន់ខ្លះរបស់
Physics
នៅពត៏មានដូចខាងក្រោមះ
Physics
setup
ដើម្បីប្រើប្រាស់វា
ត្រូវការ Library,
បន្ទាត់ខាងក្រោមជាការហៅវាមកប្រើ
Local
physics = require (“physics”)
Start
/ pause / stop
សំរាប់ហ្វាំងសិនខាងក្រោមនេះប្រើជាការ
Start /
Pause / Stop របស់ Physics simulation
Physics.start()either
instantiates or resume the simulation (if paused) ការចាប់ផ្តើម physics
simulation មុនពេលចាប់ផ្តើមហៅ any other physics functions
Physics.pause()
ប្រើសំរាប់ Pause the physics simulation
Physics.stop()
វានឹងឈប់នូវ Physics ទាំងអស់
Sleeping
bodies
បើសិនជា
Physics
body មិនទាក់ទង់នឹង Collision detection វានឹង”sleep”
បន្ទាប់ពីរយះពេល a few seconds។
ដូចនេះការប្រើ body.isSleepingAllowed = false
សូមមើលកូដះ
Physics.start
(true)
Physics.start
(false)
Simulation
options:
សំរាប់
Physics
engine មានfeatures ខ្លះជា global
simulation options។ ដែលវាជួយបន្ថែមនូវសមត្ថភាពច្រើន
Physics.setGravity()
វានឹងបញ្ចូលនូវតំលៃ X & Y components របស់
global gravity vector, ដែលគិតជា Units m/s2។ សំរាប់តំលៃដើមរបស់វាគឺ (0, 9.8) to simulate standard earth
gravity, ដែលនឹង pointing downward on the Y axis
Physics.setGravity
(0,6)
Physics.setScale()
ប្រើសំរាប់បញ្ចូលនូវ internal pixels per meter ratio ដែលប្រើក្នុងការបំលែងរវាង On-Screen Corona coordinates and
simulated physics coordinates។ វាត្រូវធ្វើម្តងមុនពេលដែល Physical
objects are instantiated។
ការផ្លាស់ប្តូរវានឹងប៉ះពាល់ដល់ការបង្ហាញ។ មើលរូបមន្តវា
Physics.setScale
(60)
Physics.setDrawMode()ប្រើសំរាប់បញ្ចូល១ក្នុងចំណោមបី “rendering modes” សំរាប់
Physics engine។ នៅពេលដែល Features រត់លើ
devices។ it’s most useful in the corona Simulator
when debugging enexpected physics engine behavior:
physics.setDrawMode(
"hybrid" ) --overlays
collision outlines on normal display objects
physics.setDrawMode(
"normal" ) --the default
Corona renderer, with no collision outlines
physics.setDrawMode(
"debug" ) --shows collision
engine outlines only
ពេលនោះ
Physics
data ត្រូវបង្ហាញដោយការប្រើប្រាស់ Color vector graphics
which reflect object types and attributes:
Orange:
dynamic physics bodies
Dark
blue: kinematic physics bodies
Green:
stat, non movable physics bodies
Gray: a
body that is sleeping due to lack of activity
Light
blue: physical joints
Limitations
សំរាប់ដែនកំនត់របស់វាគឺថា
ការបង្ហាញនៅ display
objects ជាមួយនឹង physics bodies អាចបង្ហាញនៅចំនុចខុសគ្នានៅក្នុង
display groups សំរាប់ z-index layering purposes។ បើសិនជាចង់ស្វែងរក collisions រវាង Objects
នៅក្នុងក្រុមខុសគ្នា។ វាមិនអាច move/shift/scale groups
independently of each other ពីព្រោះនៃការ underlying Box2D
functionality។ វាអាច move/scale a series of groups ជុំវិញ unision or lock step។ដូចជាក្រុមទាំងនេះនៅចំនុច
coordinate origin។ បើសិនជា groups ត្រូវបាន
moved or scaled independently of each other, Box2D collision system នឹងពិចារណាចំពោះ physics bodies នៅកន្លែងដើម,
មិនមែននៅកន្លែងដែលវា modifying the group។ វាក៏បាន applied
ចំពោះ “Hybrid” & ”Debug” draw mode simulation។ ទោះបីជា Draw modes អាចប្រាប់ទៅ bodies ឪ្យផ្លាស់ប្តូរនៅលទ្ធផលនៃ ការ modifying the group, the collision
system នឹងនៅតែពិចារណាថាវាស្ថិតនៅកន្លែងដើមដដែល។
No comments:
Post a Comment