рджрд╛рджрд╛рдЬреА рдиреЗ рдПрдХ рд╢рд▓рдЬрдо рд░реЛрдкрд╛ ... рдФрд░ рдЯреЗрдВрдЯрд▓реЗрд╕ рдЙрд╕рдореЗрдВ рд╕реЗ рд░реЗрдВрдЧ рдЧрдПредUPD: рд╕рдЬреНрдЬрди, рдХреГрдкрдпрд╛, рд╕рджрд╕реНрдпрддрд╛ рд╕рдорд╛рдкреНрдд рдХрд░реЗрдВ, рд▓реЗрдЦ рдореЗрдВ рдХреНрдпрд╛ рдЧрд▓рдд рд╣реИ рдФрд░ рдпрд╣ рдХреИрд╕реЗ рдХрд┐рд╕реА рдХреЛ рдирд╛рд░рд╛рдЬ рдХрд░рддрд╛ рд╣реИред рдФрд░ рдлрд┐рд░ рдереВрдХрдирд╛ рдХрд░реНрдо рдореЗрдВ рдЙрдбрд╝ рдЧрдпрд╛, рд▓реЗрдХрд┐рди рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд╕рд╣реА рд╣реИред
рд▓рд╛рд▓рдЪ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рдореИрдВ рдЕрдЪреНрдЫреЗ рдХрд╛рдореЛрдВ рдХреЗ рд▓рд┐рдП рд▓рд┐рдЦрддрд╛ рд╣реВрдВ ...рдЕрджреНрдпрддрди 2: рдореИрдВ рдЪреЗрддрд╛рд╡рдиреА рджреЗрдирд╛ рднреВрд▓ рдЧрдпрд╛ ... рдбрд┐рдмрдЧ рдореЛрдб рдореЗрдВ, рдпреВрдирд┐рдЯреАрдИрдбрд┐рдЯрд░ рдХрдВрд╕реЛрд▓ рдкрд░ quaternions рдХреЗ рдЕрд╡реИрдз рдореВрд▓реНрдпреЛрдВ рдкрд░ рд╕реИрдХрдбрд╝реЛрдВ рд╕рдВрджреЗрд╢ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ (рд╡реЗ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╕рд╛рдорд╛рдиреНрдпреАрдХреГрдд рдирд╣реАрдВ рд╣реИрдВ)ред рдЗрд╕ рд╡рдЬрд╣ рд╕реЗ, рдбрд┐рдмрдЧ рдореЗрдВ рдХреБрдЫ рдмрд┐рдВрджреБ рд╕реЗ рд╢реБрд░реВ рд╣реЛрдХрд░, рдпрд╣ рдзреАрдорд╛ рд╣реЛрдирд╛ рд╢реБрд░реВ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдореБрдЭреЗ рдЕрднреА рддрдХ рдпрд╣ рд╕рдордЭ рдирд╣реАрдВ рдЖрдпрд╛ рд╣реИ рдХрд┐ рдореЗрд░реА рдЧрд▓рддреА рдпрд╛ рдмрдЧ рдпреВрдирд┐рдЯреА рд░рд┐рд▓реАрдЬ рдореЗрдВ рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВред рдпреВрдирд┐рдЯреА 3 рдбреА рдлреЛрд░рдо рдкрд░ рд╕рд╡рд╛рд▓ рдкреЛрд╕реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рд╣рд╛рде рдирд╣реАрдВ рдкрд╣реБрдВрдЪреЗрдВрдЧреЗред
рдкрд░рд┐рдЪрдп
рд╢реНрд░реА
рдлреНрд░реЙрдЬрд╝рдордЯреЗрдЬрд╝ рдХреЗ рдПрдХ рд▓реЗрдЦ рдиреЗ рдореБрдЭреЗ рдЗрд╕ рд▓реЗрдЦ рдХреЗ рд╕рд╛рде рдЬрд▓реНрджреА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЗрд░рд┐рдд рдХрд┐рдпрд╛, рдЬреЛ рдЖрдиреБрд╡рдВрд╢рд┐рдХреА рдХреЗ рд╡рд┐рд╖рдп рдкрд░ рдПрдХ рдЦреЗрд▓ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░реЗрдЧрд╛ред рдореИрдВ рдкрд╛рда рдХреА рд╕рдВрднрд╛рд╡рд┐рдд рдирдореА рдХреЗ рд▓рд┐рдП рдЕрдЧреНрд░рд┐рдо рдореЗрдВ рдорд╛рдлреА рдорд╛рдБрдЧрддрд╛ рд╣реВрдБред "рдХрдВрдШреА" рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╕рдордп рдирд╣реАрдВ рд╣реИред рд╕реНрд▓реЗрдЧрд┐рдВрдЧ рдФрд░ рдЕрдиреНрдп рд╢рд╛рдмреНрджрд┐рдХ рджреЛрд╖реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрд░реЛрдз рдХреЗ рд╣рдмрд░рдкреЛрдЯреНрдЯрд╛ рджреНрд╡рд╛рд░рд╛ рднреЗрдЬреЗрдВ - рдореИрдВ рд╕рдм рдХреБрдЫ рдареАрдХ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ред
рд▓реЗрдЦ рдореЗрдВ рдореИрдВ рдХрд╛рд░реНрдмрдирд┐рдХ рд╡рд┐рдХрд╛рд╕ рдХреЗ рдЕрдиреБрдХрд░рдг рдХреЗ рд╕рд╛рде рдмрдирд╛рдИ рдЧрдИ рдбреЗрдореЛ рдЕрд╡рдзрд╛рд░рдгрд╛ рдХрд╛ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реВрдВрдЧрд╛ред рд╢реБрд░реБрдЖрдд рдореЗрдВ рдореИрдВ рдЙрд╕ рд╡рд┐рдЪрд╛рд░ рдХрд╛ рд╡рд░реНрдгрди рдХрд░реВрдВрдЧрд╛ рдЬрд┐рд╕рдХреЗ рджреНрд╡рд╛рд░рд╛ рдбреЗрдореЛ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдлрд┐рд░ рдореИрдВ рд╡рд░реНрдгрди рдХрд░реВрдВрдЧрд╛ рдХрд┐ рдореИрдВрдиреЗ рдХреМрди рд╕реЗ рдЙрдкрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛ рдФрд░ рдореИрдВрдиреЗ рдХрд┐рд╕ рдЪреАрдЬ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд┐рдпрд╛ред рдЦреИрд░, рдореИрдВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди, рдПрдХ рдкреНрд░рджрд░реНрд╢рди, рд╕рд╛рде рд╣реА рдЙрди рдЪреАрдЬреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ рдЬрд┐рдиреНрд╣реЗрдВ рдореИрдВ рдЖрдЧреЗ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред
рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣, рдХреЛрдб рдЬреАрдердм рдкрд░ рдкреЛрд╕реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ ред
рдЧреЗрдо рдЖрдЗрдбрд┐рдпрд╛ рдФрд░ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк # 1
рдореЗрд░реЗ рд▓рд┐рдП рдкреНрд░реЗрд░рдгрд╛ рдХреЗ рдореБрдЦреНрдп рд╕реНрд░реЛрдд рд╕реНрдЯреНрд░реИрдЧрд╛рддреНрд╕реНрдХреА рднрд╛рдЗрдпреЛрдВ (рдП, рдмреА рдФрд░ рдЬреЗред;) рдХреА рджреБрдирд┐рдпрд╛ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рд╣рдм рдкрд░ рдХрдИ рд▓реЗрдЦ рд╣реИрдВ (рдиреАрдЪреЗ рд╕реВрдЪреА рджреЗрдЦреЗрдВ)ред
рдореВрд▓ рд╡рд┐рдЪрд╛рд░ рдПрдХ рдЦреЗрд▓ рдХреА рджреБрдирд┐рдпрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╕рдм рдХреБрдЫ рдпрд╛ рд▓рдЧрднрдЧ рд╕рдм рдХреБрдЫ рдЬреАрд╡рди рд╕реЗ рднрд░рд╛ рд╣реБрдЖ рд╣реИ, рдирд┐рд░реНрдорд┐рдд рдирд╣реАрдВ рд╣реИ, рдЗрдХрдЯреНрдард╛ рдирд╣реАрдВ рд╣реИ, рдирд┐рд░реНрдорд┐рдд рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдкреИрджрд╛ рд╣реЛрддрд╛ рд╣реИ, рд╡рд┐рдХрд╕рд┐рдд рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдмрдврд╝рддрд╛ рд╣реИред рд╕рдм рд╕рдм рдореЗрдВ, рдмреАрдЬрд╛рдгреБ рдХреЗ рд╕рд╛рде рдЯреЗрд░рд╛рд░рд┐рдпрд╛ рдХрд╛ рдорд┐рд╢реНрд░рдгред рдпрд╣ рдЕрдЧрд░ рдЦреЗрд▓ рдХреЗ рд╡рд┐рдЪрд╛рд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рд╣реИред рдореИрдВ рдЖрдкрдХреЛ рдЕрднреА рддрдХ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдирд╣реАрдВ рдмрддрд╛рдКрдВрдЧрд╛ - рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ, рдЖрдкрдХреЛ рдЕрдкрдиреЗ рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЛ рдХреНрд░рдо рдореЗрдВ рд░рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдореИрдВрдиреЗ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛, рдЬрд┐рд╕рдореЗрдВ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕рд╛рд░ рдкреМрдзреЗ рдХреЗ рдЬрдиреНрдо рдФрд░ рд╡рд┐рдХрд╛рд╕ рдХрд╛ рдирд┐рд░реАрдХреНрд╖рдг рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛрдЧрд╛ (рд▓реЗрдЦ рдХреЗ рд╢реАрд░реНрд╖рдХ рдореЗрдВ рдХрд╛рдо рд╢реАрд░реНрд╖рдХ)ред рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдЖрдВрдХрдбрд╝реЛрдВ рдореЗрдВ рдХрд▓реНрдкрдирд╛ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХреЗ рд░реЗрдЦрд╛рдЪрд┐рддреНрд░ рд╣реИрдВред

рдпрд╣ рд╕реНрдХреЗрдЪ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреЗ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЪрд░рдг рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИред рдЗрд╕ рд╕реНрддрд░ рдкрд░, рд╣рдбреНрдбрд┐рдпреЛрдВ рдФрд░ рддрд╛рд░реЛрдВ рдХреЛ рдирд╛рднрд┐рдХ рд╕реЗ "рдмрдврд╝рдиреЗ" рд╕реЗ рдЬреЛрдбрд╝рддрд╛ рд╣реИред рд╣рдбреНрдбрд┐рдпреЛрдВ рдФрд░ рддрд╛рд░реЛрдВ рдХреЛ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдпрд╛ рдХреЛрд░ рд╕реЗ рдирдП рдЬреЛрдбрд╝реЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдЬреИрд╕реЗ-рдЬреИрд╕реЗ рд╕рдВрд░рдЪрдирд╛ рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдмрдврд╝рддреЗ рд╣реИрдВ, рд╡реЗ рдЕрдкрдиреА рдЬреНрдпрд╛рдорд┐рддрд┐ рдФрд░ рднреМрддрд┐рдХ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВред

рдбрд┐рд╡реАрдЬрди рдФрд░ рд╕рдореНрдорд┐рд▓рди рджреЛ рдСрдкрд░реЗрд╢рди рд╣реИрдВ рдЬреЛ рдХрд┐
рдСрдЧрдореЗрдВрдЯрд┐рдВрдЧ рдЯреЛрдкреЛрд▓реЙрдЬреА рдХреЗ рдиреНрдпреВрд░реЛ рдЗрд╡реЛрд▓реНрдпреВрд╢рди рдореЗрдВ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╡рд░реНрдгрд┐рдд рд╣реИрдВред рдЙрдиреНрд╣реЗрдВ рдЬреАрди рдХреЗ рд╕рд╛рде рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдореБрдЭреЗ рджреБрдирд┐рдпрд╛ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП рдЖрдиреБрд╡рдВрд╢рд┐рдХ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ред
Physics2D.Net + WPF рд░реЗрдВрдбрд░ рдмрдирд╛рдо рдпреВрдирд┐рдЯреА 3 рдбреА 4.3.0
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди Physics2D.Net рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рддрдп рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЙрд╕рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдЖрд╕рд╛рди рд▓рдЧрддрд╛ рд╣реИ (рдЖрдк
рд╡рд┐рдХреА-рдмреВрдврд╝реЗ рд╡реНрдпрдХреНрддрд┐ рдкрд░ рдПрдХ рд╕рд░рд▓ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ):
PhysicsEngine engine = new PhysicsEngine(); engine.BroadPhase = new Physics2DDotNet.Detectors.SelectiveSweepDetector(); engine.Solver = new Physics2DDotNet.Solvers.SequentialImpulsesSolver();
рдЯрд╛рдЗрдорд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рд┐рдореБрд▓реЗрд╢рди рд╢реБрд░реВ рдФрд░ рдмрдВрдж рдХрд░реЗрдВ (
PhysicsTimer ):
PhysicsTimer timer = new PhysicsTimer(engine.Update, .01f); timer.IsRunning = true;
рд▓реЗрдХрд┐рди рдЕрд╡рд╕рд░, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рджреГрд╢реНрдп рдХрд╛ рдкреНрд░рддрд┐рдкрд╛рджрди рдПрдХ рд╕рдорд╕реНрдпрд╛ рдереАред рд▓реЗрдЦрди рдпреЛрдЧреНрдп рдкрд░ рд░реЗрдВрдбрд░рд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕рдмрд╕реЗ рд╕рд░рд▓ рд╕рдорд╛рдзрд╛рди рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ (
рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рдХреЛрдб рджреЗрдЦреЗрдВ)ред рдмрд╛рдж рдореЗрдВ рдореИрдВрдиреЗ рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЛ рддреНрдпрд╛рдЧ рджрд┐рдпрд╛, рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рдерд╛ рдХрд┐ рдкреНрд░рддрд┐рдкрд╛рджрди рдХреЛ рдХреБрдЫ рдЕрдзрд┐рдХ рдЙрддреНрдкрд╛рджрдХ рдХреЗ рд╕рд╛рде рдмрджрд▓рдиреЗ рдореЗрдВ рдХрдард┐рдирд╛рдЗрдпрд╛рдБ рд╣реЛрдВрдЧреАред рдЕрднреА рдХреБрдЫ рдФрд░ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рд╕реАрдЦрдирд╛ рдмреЗрд╣рддрд░ рд╣реИ, рдореИрдВрдиреЗ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рдЕрдЧрд░ рдХрд┐рд╕реА рдХреЛ Physics2D.Net рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрдврд╝рдиреЗ рдореЗрдВ рджрд┐рд▓рдЪрд╕реНрдкреА рд╣реИ, рддреЛ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рд╕рджрд╕реНрдпрддрд╛ рд╕рдорд╛рдкреНрдд рдХрд░реЗрдВ - рдореИрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП рд╕рдордп рдЦреЛрдЬрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ред
рдпреВрдирд┐рдЯреА 3 рдбреА 4.3.0 рд░рд┐рд▓реАрдЬ рдкрд░ рд▓реЗрдЦ рдХреЗ рдмрд╛рдж, рдЬреЛ рдореВрд▓ 2 рдбреА рдореЛрдб рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕ рдкрд░ рдПрдХ рдбреЗрдореЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдпреВрдирд┐рдЯреА 3 рдбреА рдкреНрд░реЛрдЬреЗрдХреНрдЯреНрд╕ рдУрдУрдкреА рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рд╕реЗ рднрд┐рдиреНрди рд╣реИрдВ рдЬреЛ рдореБрдЭреЗ рдХреЛрдб рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдШрдЯрдХ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рдмрдбрд╝реЗ рдкреИрдорд╛рдиреЗ рдкрд░ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдкрд░рд┐рдЪрд┐рдд рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, Physics2D рдХреЗ рд╕рд╛рде рд╢рд╛рдЦрд╛ рдХреЗ рдХреЛрдб рдиреЗ рдЙрдкрдпреЛрдЧ рди рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдЦрд░реЛрдВрдЪ рд╕реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред
рдЕрдкрдиреА рдЕрд╡рдзрд╛рд░рдгрд╛ рдХреЗ рдЖрдзрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ, рдореИрдВрдиреЗ 2 рдбреА рдбреЗрдореЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ (
рдпрд╣ рдпрд╣рд╛рдВ рдПрдХ ) рд▓рд┐рдпрд╛ред рдЦреЗрд▓ рд╡рд╕реНрддреБ рдФрд░ рд╡реНрдпрд╡рд╣рд╛рд░ рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдХреЗ рдореБрдЦреНрдп рднрд╛рдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдирдХреЗ рд╕реНрдкреНрд░рд╛рдЗрдЯреНрд╕ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд┐рдпрд╛ред рд╕рд╛рде рд╣реА, рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рд╕рд╣рд╛рдпрдХреЛрдВ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ред
рдЙрдиреНрд╣реЗрдВ рд╕рдВрджреЗрд╣ рдерд╛ рдХрд┐ рдпреВрдирд┐рдЯреА 3 рдбреА рдореЗрдВ рдкрд╛рд░рдВрдкрд░рд┐рдХ рдУрдУрдкреА рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд╕рд╛рде рдпрд╣ рдореБрд╢реНрдХрд┐рд▓ рд╣реЛрдЧрд╛ред рд╡реНрдпрд╡рд╣рд╛рд░рд┐рдХ рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдореЗрдВ рдмрд╣реБрд░реВрдкрддрд╛ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддреА рд╣реИред рд▓реЗрдХрд┐рди рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдкрд╛рд░рдВрдкрд░рд┐рдХ рдУрдУрдкреА рдХреЗ рд╕рд╛рде рдЗрддрдиреА рд╕рдорд╕реНрдпрд╛рдПрдВ рдирд╣реАрдВ рдереАрдВ ... рд╢рд╛рдпрдж рдЕрдм рддрдХред рдПрдХ рд╕рдорд╛рдзрд╛рди рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп, рдореИрдВ рди рдХреЗрд╡рд▓ рдореЛрдиреЛ рдбреЗрд╡рд▓рдкрдореЗрдВрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рдмрд▓реНрдХрд┐ рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 2012 рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдореЗрдВ C # рд╕рдВрдкрд╛рджрдХ рдмреЗрд╣рддрд░ рдФрд░ рдЕрдзрд┐рдХ рд╕реНрдерд┐рд░ рд╣реИред рд╕рд╛рдордирд╛ рдореЛрдиреЛ рдСрдЯреЛ-рдЗрдВрдбреЗрдВрдЯреЗрд╢рди, рдХреЛрдб рдХреЗ рдЯреБрдХрдбрд╝реЛрдВ рдХреЛ рдЦреАрдВрдЪрдиреЗ рдФрд░ рдЫреЛрдбрд╝рдиреЗ, рдСрдЯреЛ-рдХреНрд▓реЛрдЬрд┐рдВрдЧ рдмреНрд░реИрдХреЗрдЯ рдФрд░ рдЕрдиреНрдп рдЯреНрд░рд┐рдлрд╝рд▓реНрд╕ рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рд╡рд┐рдХрд╛рд╕ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдХрд╛рдлреА рд╣реИрдВ рдФрд░ рд╡реЗ рддрдирд╛рд╡ рджреЗрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдЕрднреА рддрдХ рдирд╣реАрдВ рд╕реАрдЦрд╛ рдХрд┐ рд╡реАрдПрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреИрд╕реЗ рд╢реБрд░реБрдЖрдд рдХреА рдЬрд╛рдПред рд╡реИрд╕реЗ, рдореЛрдиреЛ рдбреЗрд╡рд▓рдк рдореЗрдВ рдбрд┐рдмрдЧ рдХреА рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реИрдВред рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ, рдПрдирдо рдХреЗ рд╕рд╛рде рдирд╛рдорд╕реНрдерд╛рди рдбреАрдмрдЧ рдореЗрдВ рдЕрдирд▓реЛрдб рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдбрд┐рдмрдЧ рдореЗрдВ рдЧреЗрдо рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рдкреНрд░рдХрд╛рд░ рдирд╣реАрдВ рджрд┐рдЦрд╛рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдЙрдиреНрд╣реЗрдВ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдЪрд░ рдореЗрдВ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдирд╛рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВред рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдХрд┐рд╕реА рднреА рдЯреНрд░рд┐рдХ рдпрд╛ рд╡реНрдпрд░реНрде рдХрд┐рдП рдЧрдП enum'ki рдХреЛ рдПрдХ рдЕрд▓рдЧ рдирд╛рдорд╕реНрдерд╛рди рдореЗрдВ рдирд╣реАрдВ рдЬрд╛рдирддрд╛ред
рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди
рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдХреНрдпрд╛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
- рддреАрди рдкреНрд░рдХрд╛рд░ рдХреЗ рдкреНрд░реАрдлрд╝реИрдм рдЬреЛрдбрд╝реЗ рдЬрд╛рддреЗ рд╣реИрдВ: рдХреЛрд░ (рдХреЛрд░), рдиреЛрдб (рдиреЛрдб) рдФрд░ рд╣рдбреНрдбреА (рд╣рдбреНрдбреА)
- рдХрдИ рдкреНрд░рдХрд╛рд░ рдХреЗ рдиреЛрдбреНрд╕ рдФрд░ рд╣рдбреНрдбрд┐рдпрд╛рдВ рд╣реИрдВ, рдХреЛрд░ рдПрдХ рд╣реА рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╣реИ
- рдбреАрдПрдирдП рдХреА рд▓реЛрдбрд┐рдВрдЧ, рдбрд┐рдХреЛрдбрд┐рдВрдЧ рдФрд░ рдкреНрд░рддрд┐рдХреГрддрд┐, рд╕рд╛рде рд╣реА рдЗрд╕рдХреА рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рдЬреАрди рдХреЛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ред рд▓рд┐рдкрд┐рдпреЛрдВ рдореЗрдВ рдмреАрдЬ, DnaProcessor, GeneProcessor рд╕реНрдХреНрд░рд┐рдкреНрдЯ рджреЗрдЦреЗрдВ
- рдкреНрд░рдпреЛрдЬреНрдпрддрд╛ рдХреА рд╢рд░реНрддреЛрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рддреЗ рд╕рдордп рдбрд┐рдХреНрд░рд┐рдкреНрдЯ рдХрд┐рдП рдЧрдП рдЬреАрди рдХреЛ рдЧреЗрдо рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд╡рд░реНрддрдорд╛рди рднрд╛рдЧ рдкрд░ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
- рдЬреАрди рдХреА рдкреНрд░рдпреЛрдЬреНрдпрддрд╛ рдХреЗ рд▓рд┐рдП рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╢рд░реНрддреЗрдВ рд▓рд╛рдЧреВ рдХреА рдЬрд╛рддреА рд╣реИрдВ: рд╡рд╕реНрддреБ рдХреЗ рддрддреНрд╡реЛрдВ рдХреЗ рдкреЗрдбрд╝ рдореЗрдВ рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ (applic рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕рд╣рд┐рд╖реНрдгреБрддрд╛); рдореВрд▓ рддрддреНрд╡ рдХрд╛ рдЙрдкрдкреНрд░рдХрд╛рд░; рдЬреАрди рд╕рдХреНрд░рд┐рдпрдг рд╕рдордпред
- рд╣рдбреНрдбреА рдФрд░ рдиреЛрдб рдЬреАрди рдХреЗ рд▓рд┐рдП, рдмрд╛рд▓ рддрддреНрд╡реЛрдВ рдХреЗ рдЬреЛрдбрд╝ рдХреЛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ
- рд╡рд┐рдХрд╛рд╕ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рдЪрд░рдгреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рд╡рд╛рд▓реА рд▓рд┐рдкрд┐рдпрд╛рдБ рд╡рд░реНрддрдорд╛рди GameObject рдХреЗ рдШрдЯрдХреЛрдВ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╕рд╛рд░рдг рд╕рдВрджреЗрд╢ (GameObject.SendMessage) рднреЗрдЬрдХрд░ рдПрдХ-рджреВрд╕рд░реЗ рдХреЗ рд╕рд╛рде рд╕рдВрд╡рд╛рдж рдХрд░рддреА рд╣реИрдВред
- рдиреЛрдбреНрд╕ рдЬреЛрдбрд╝рддреЗ рд╕рдордп рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдПрдиреАрдореЗрд╢рди рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ред
- рдЬреАрди (GenesManager) рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рджреЛ рд╕рд┐рдВрдЧрд▓рдЯрди-рд╣реЗрд▓реНрдкрд░реНрд╕ рдФрд░ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдореЗрдВ Prefabs (PrefabsManager) рдХреЛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЕрдм рдбреЗрдореЛ рдореЗрдВ рдереЛрдбрд╝рд╛ рдФрд░ рд╡рд┐рд╕реНрддреГрдд рдЬреАрд╡рди рдЪрдХреНрд░ред
рд╕рдВрд╡рд░реНрдзрд┐рдд рд╡рд╕реНрддреБ рдХреА рдЬрдбрд╝ рдХреЛрд░ (рдкреНрд░реАрдлреИрдм рдХреЛрд░) рд╣реИред рдЗрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдПрдХ рдмреАрдЬ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реИ рдЬреЛ "dna.txt" рдХреЗ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рд╕реЗ рд▓реЛрдб рд╣реЛрддреА рд╣реИред
using UnityEngine; using System.Collections; using Fukami.Helpers; public class Seed : MonoBehaviour { public string Dna; void Start(){ var dnaAsset = Resources.Load<TextAsset>("dna"); Dna = dnaAsset.text.Replace("\r\n","*"); } void OnSeedDnaStringRequested (Wrap<string> dna) { dna.Value = Dna; dna.ValueSource = "Seed"; } }
рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкреВрд░рд╛ рд╢рд▓рдЬрдо рдбреАрдПрдирдП рд╣реИред
// рдиреЛрдб, [рдиреЛрдб рдкреНрд░рдХрд╛рд░], [рдЕрд╕реНрдерд┐ рдкреНрд░рдХрд╛рд░], [рдЖрдзрд╛рд░ рдЧрд╣рд░рд╛рдИ], [рдЧрд╣рд░рд╛рдИ рд╕рд╣рд┐рд╖реНрдгреБрддрд╛], [рд╕рдордп рдмрдврд╝рд╛рдПрдБ]
рдиреЛрдб, 1,0,0,0,07 рдП
рдиреЛрдб, 1,0,0,0,080
рдиреЛрдб, 2,0,0,0,100
рд╣рдбреНрдбреА, 1,0,4,2,190
рд╣рдбреНрдбреА, 1,0,4,2,15E
рдиреЛрдб, 3,0,3,2,96
рд╣рдбреНрдбреА, 1,0,0,5, рд╕реА 8
рд╣рдбреНрдбреА, 1,0,2,1, рдПрдлрдП
рд╣рдбреНрдбреА, 1,0,3,1,12 рд╕реА
рдиреЛрдб, 2,0,3,2, рдлрд╛
рдиреЛрдб, 1,0,7,3,80
рд╣рдбреНрдбреА, 1,0,8,2,128
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдПрдХ DnaProcessor рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд░реНрдиреЗрд▓ рд╕реЗ рдЬреБрдбрд╝реА рд╣реЛрддреА рд╣реИ, рдЬреЛ рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ рдЬрд╛рдВрдЪрддреА рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд╡рд░реНрддрдорд╛рди рддрддреНрд╡ рдореЗрдВ рдорд╛рддрд╛-рдкрд┐рддрд╛ рд╣реИрдВред
void Start() { _age = 0.0f; var dna = new Wrap<string>(); if (gameObject.transform.parent != null) { var gen = new Wrap<int>(); gameObject.transform.parent.SendMessage("OnDnaGenRequested", gen); _generation = gen.IsSet ? gen.Value + 1 : 0; gameObject.transform.parent.SendMessage("OnDnaStringRequested", dna); } else { SendMessage("OnSeedDnaStringRequested", dna); } if (dna.IsSet) { DnaString = dna.Value; } }
рдпрджрд┐ рдХреЛрдИ рдорд╛рддрд╛-рдкрд┐рддрд╛ рдирд╣реАрдВ рд╣реИ, рддреЛ DnaProcessor рдмреАрдЬ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реЗ рдбреАрдПрдирдП рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рддреЗ рд╣реБрдП рдПрдХ тАЬOnSeedDnaStringRequestedтАЭ рд╕рдВрджреЗрд╢ рднреЗрдЬрддрд╛ рд╣реИред рдЕрдиреНрдпрдерд╛, "OnDnaStringRequested" рд╕рдВрджреЗрд╢ рдореВрд▓ рддрддреНрд╡ рдореЗрдВ рдПрдХ рд╣реА DnaProcessor рд╕реЗ рдбреАрдПрдирдП рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рднреЗрдЬрд╛ рдЬрд╛рдПрдЧрд╛ред DnaProcessor рдЬреАрди рдХреЛ рдЗрд╕ рдорд╛рди рдХреЛ рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдорд╛рддрд╛-рдкрд┐рддрд╛ рд╕реЗ рдкреЗрдбрд╝ рдореЗрдВ рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ (рдЧрд╣рд░рд╛рдИ, рдкреАрдврд╝реА) рдХреЗ рд▓рд┐рдП рдкреВрдЫрддрд╛ рд╣реИред
рдЬреАрди рдХрд╛ рдЬреАрд╡рди рдЪрдХреНрд░ рдЬреАрдирдкреНрд░реЛрд╕реЗрд╕рд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рджреНрд╡рд╛рд░рд╛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ, рдпрд╣ рд╕рдХреНрд░рд┐рдпрдг рдХреЗ рд╕рдордп рдХреЛ рдЧрд┐рдирддрд╛ рд╣реИ рдФрд░ рдлрд┐рд░ "рдСрдирдПрдкреНрд▓реАрдЧреАрди" рд╕рдВрджреЗрд╢ рднреЗрдЬрддрд╛ рд╣реИред
void Update () { if (Gene != null) { _age += Time.deltaTime; } if (_age >= Gene.GrowTime) { enabled = false; SendMessage("OnApplyGene", Gene); return; } }
рдпрд╣ рд╕рдВрджреЗрд╢ рдпрд╛ рддреЛ "рдмреЛрдиреНрд╕рдРрдкреНрд▓рд┐рд╕реЗрдВрдЯ" (рдпрджрд┐ рд╡рд░реНрддрдорд╛рди рддрддреНрд╡ рдПрдХ рдиреЛрдб рд╣реИ), рдпрд╛ рд╣рдбреНрдбреА рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ "рдиреЛрдбреНрд╕рдРрдкреНрд▓рд┐рдХреЗрдВрдЯ" рд╕реНрд╡реАрдХрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред OnApplyGene рд╕рдВрджреЗрд╢ рд╣реИрдВрдбрд▓рд░ рдореЗрдВ рдпреЗ рджреЛрдиреЛрдВ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЬреАрди рдХреА рдкреНрд░рдпреЛрдЬреНрдпрддрд╛ рдХреА рд╢рд░реНрддреЛрдВ рдФрд░ рдирд┐рдпрдореЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░рддреЗ рд╣реИрдВред
bool GetIsApplicable(GeneData gene) { // Part Type check if (gene.GeneType != "node" && gene.GeneType != "stats") { return false; } // Subtype check if (gene.ApplicantSubtype != 0 && gene.ApplicantSubtype != Subtype) { return false; } // Generation check var gen = Generation; if (gen != gene.BaseDepth) { var actDistance = Mathf.Abs(gen - gene.BaseDepth); if (UnityEngine.Random.Range(0f, 1f) < actDistance / (gene.DepthTolerance + 1)) { return false; } } return true; }
void OnApplyGene(GeneData gene) { if (!GetIsApplicable(gene)) return; switch (gene.GeneType.ToLower()) { case "bone": AddBone(gene); break; case "joint": AddJoint(gene); break; case "stats": AddStats(gene); break; default: break; } }
рдпрджрд┐ рд╕рдм рдХреБрдЫ рдХреНрд░рдо рдореЗрдВ рд╣реИ рдФрд░ рдирд┐: рд╢реБрд▓реНрдХ рд╕реНрд▓реЙрдЯ (
рдЪрд╛рдЗрд▓реНрдбрд╢реЙрдЯ рд╕реВрдЪреА ) рд╣реИрдВ, рддреЛ рдЬреАрди рдХреЗ рд▓рд┐рдП рдПрдХ рдмрдЪреНрдЪрд╛ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
private void AddBone(GeneData gene) { var slot = Slots.FirstOrDefault(s => !s.IsOccupied); if (slot == null) { return; } slot.IsOccupied = true; var bonePrefab = PrefabsManager.Instance.LoadPrefab(string.Format("{0}{1}", gene.GeneType, gene.Subtype)); var newBody = (GameObject)Instantiate(bonePrefab, gameObject.transform.position, gameObject.transform.rotation * Quaternion.AngleAxis(slot.Angle, Vector3.forward)); newBody.transform.parent = gameObject.transform; newBody.SetActive(true); //var slide = newBody.AddComponent<SliderJoint2D>(); var slide = newBody.AddComponent<HingeJoint2D>(); slide.connectedBody = gameObject.GetComponent<Rigidbody2D>(); slide.connectedAnchor = new Vector2(slot.X, slot.Y); //slide.limits = new JointTranslationLimits2D { min = -0.1f, max = 0.1f }; slide.limits = new JointAngleLimits2D { min = -1.0f, max = 1.0f }; slide.useLimits = true; gameObject.SendMessage("OnChildAdded", newBody, SendMessageOptions.DontRequireReceiver); } bool GetIsApplicable(GeneData gene) { // Part Type check if (gene.GeneType != "bone" && gene.GeneType != "stats" && gene.GeneType != "joint") { return false; } // Subtype check if (gene.ApplicantSubtype != 0 && gene.ApplicantSubtype != Subtype) { return false; } // Generation check var gen = Generation; if (gen != gene.BaseDepth) { var actDistance = Mathf.Abs(gen - gene.BaseDepth); if (UnityEngine.Random.Range(0f, 1f) < actDistance / (gene.DepthTolerance + 1)) { return false; } } return true; }
private void AddNode(GeneData gene) { var slot = Slots.FirstOrDefault(s => !s.IsOccupied); if (slot == null) return; slot.IsOccupied = true; var nodePrefab = PrefabsManager.Instance.LoadPrefab(string.Format("{0}{1}", gene.GeneType, gene.Subtype)); var newBody = (GameObject)Instantiate(nodePrefab, gameObject.transform.position, Quaternion.FromToRotation(Vector3.right, Vector3.up) * //Quaternion.AngleAxis(Random.Range(-slot.Angle, slot.Angle), Vector3.forward)); Quaternion.AngleAxis(slot.Angle, Vector3.forward)); newBody.transform.parent = gameObject.transform; newBody.SetActive(true); var hinge = newBody.AddComponent<HingeJoint2D>(); hinge.connectedBody = gameObject.GetComponent<Rigidbody2D>(); hinge.connectedAnchor = new Vector2(slot.X, slot.Y); hinge.limits = new JointAngleLimits2D { min = -1.0f, max = 1.0f }; hinge.useLimits = true; newBody.AddComponent<HingeSmoothPos>(); gameObject.SendMessage("OnChildAdded", newBody, SendMessageOptions.DontRequireReceiver); }
PrefabsManager рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдмрдЪреНрдЪреЗ рдХреЗ рддрддреНрд╡ рдХреЛ рддреНрд╡рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкреНрд░рдХрд╛рд░ (
рд╣рдбреНрдбреА рдпрд╛
рдиреЛрдб ) рджреНрд╡рд╛рд░рд╛ рдкреНрд░реАрдлреИрдм рдХрд╛ рдЪрдпрди рдХрд░рддрд╛ рд╣реИ рдФрд░ рдкреНрд░реАрдлреИрдм рдЙрдкрдкреНрд░рдХрд╛рд░ рдХреЗ рдкреЛрд╕реНрдЯрдлрд┐рдХреНрд╕ред рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, "рдиреЛрдб 1", "рдиреЛрдб 2", рдЖрджрд┐ред DieIfNoChildren рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЕрддрд┐рд░рд┐рдХреНрдд рд░реВрдк рд╕реЗ рдиреЛрдбреНрд╕ рд╕реЗ рдЬреБрдбрд╝реА рд╣реЛрддреА рд╣реИ, рдЬреЛ рдХреЗрд╡рд▓ рдиреЛрдб рдХреЛ рдирд╖реНрдЯ рдХрд░ рджреЗрддреА рд╣реИ рдпрджрд┐ рдХреЛрдИ рдмрдЪреНрдЪрд╛ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕рдордп рдХреЗ рдмрд╛рдж рдЗрд╕рдХреЗ рд╕рд╛рде рд╕рдВрд▓рдЧреНрди рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред
рдХрдИ рдмрд┐рдВрджреБрдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрд▓рдЧ рд╕реЗ рдмрддрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╣реИред рдкреНрд░рд╢реНрди рдкреВрдЫреЗрдВ - рдореИрдВ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдЙрддреНрддрд░ рджреЗрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ рдпрд╛ рдПрдХ рдЕрд▓рдЧ рдкреЛрд╕реНрдЯ рднреА рд▓рд┐рдЦреВрдВрдЧрд╛ред рдЗрд╕ рдмреАрдЪ, рдпрд╣рд╛рдВ рдЖрдкрдХреЗ рд▓рд┐рдП рдПрдХ рдмреЗрд╣рддрд░ рдбреЗрдореЛ рдПрдиреАрдореЗрд╢рди рд╣реИред рдЖрдк рд╕рдВрдЧреНрд░рд╣рд┐рдд EXE
рдХреЛ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЪреЗрддрд╛рд╡рдиреА! GIF 8MB рдХреЛрдИ рдореБрдЭреЗ YouTube рдкрд░ рд╡реАрдбрд┐рдпреЛ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдХреНрд░реАрди рд╕реЗ рд╡реАрдбрд┐рдпреЛ рдХреИрдкреНрдЪрд░ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдФрд░ рдореБрдлреНрдд рддрд░реАрдХрд╛ рдмрддрд╛рддрд╛ рд╣реИрдЖрдЧреЗ рдХреНрдпрд╛ рд╣реИ
рдЕрдЧрд▓рд╛, рдореИрдВ рдЕрдзрд┐рдХ рдпрд╛ рдХрдо рд╕реБрдВрджрд░ рд╕рд┐рдореБрд▓реЗрд╢рди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбреАрдПрдирдП рдХреЗ рд╕рд╛рде рдЦреЗрд▓рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдЕрднреА рднреА рдЬреЛрдбрд╝реЛрдВ рдХреЗ рдЬреАрди рдХреЗ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ (рд╕рдВрдпреБрдХреНрдд, рджреЛ рдиреЛрдбреНрд╕ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рд╡рд╛рд▓рд╛ рдПрдХ рддрддреНрд╡), рд╕рд╛рде рд╣реА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХрд╛ рдПрдХ рд╕рдВрд╢реЛрдзрдХ (рдЖрдБрдХрдбрд╝реЗ, рджреНрд░рд╡реНрдпрдорд╛рди рдФрд░ рдЕрдиреНрдп рд╢рд╛рд░реАрд░рд┐рдХ рдЧреБрдгрд╛рдВрдХ, рд╣рд┐рдЯ рдЕрдВрдХ, рдЖрджрд┐)ред рдЕрдЧрд▓реА рдЪреАрдЬ рдЬрд┐рд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛рдИ рдЧрдИ рд╣реИ, рд╡рд╣ рд╣реИ рд╣рдбреНрдбрд┐рдпреЛрдВ рдФрд░ рдиреЛрдбреНрд╕ рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд рддрддреНрд╡ (рд╕реБрд░рдХреНрд╖рд╛рддреНрдордХ рдЖрд╡рд░рдг, рдХреБрдЫ рд╣рдорд▓рд╛рд╡рд░ рддрддреНрд╡, рдЖрджрд┐), рд╕рд╛рде рд╣реА рд╣рдбреНрдбрд┐рдпреЛрдВ рдХреЛ рдирд╖реНрдЯ рдХрд░рдиреЗ рдпрд╛ рдкреЛрд░реНрдЯрд▓реНрд╕ рдХреЗ рд╕рд╛рде рдмрджрд▓рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ред рдЕрдВрдд рдореЗрдВ, рдореИрдВ рдПрдХ "рдП-рд▓рд╛ рдЯреЗрд░рд╛рд░рд┐рдпрд╛" рдХреИрдЯрд╛рдорд╛-рд╣рд╛рдЙрд╕, рдпрд╛ рдмрдВрдХрд░ рдХреА рддрд░рд╣ рдХреБрдЫ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред
! рдЖрдкрдХреЗ рдзреНрдпрд╛рди рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!