рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдореИрдВ рдЖрдкрдХреЛ рдмрддрд╛рдКрдВрдЧрд╛ рдХрд┐ рдЕрд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЗрдВрдЬрди 4 рдореЗрдВ рдкреЛрд░реНрдЯрд▓реНрд╕ рдХреИрд╕реЗ рдмрдирд╛рдП рдЬрд╛рддреЗ рд╣реИрдВред рдореБрдЭреЗ рдРрд╕рд╛ рдХреЛрдИ рд╕реНрд░реЛрдд рдирд╣реАрдВ рдорд┐рд▓рд╛, рдЬреЛ рдЗрд╕ рддрд░рд╣ рдХреА рдкреНрд░рдгрд╛рд▓реА рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реЛ (рдкреЛрд░реНрдЯрд▓реЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдирд┐рдЧрд░рд╛рдиреА рдХрд░рдирд╛ рдФрд░ рдЙрдирдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЧреБрдЬрд░рдирд╛), рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЕрдкрдирд╛ рд▓рд┐рдЦрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред
рдПрдХ рдкреЛрд░реНрдЯрд▓ рдХреНрдпрд╛ рд╣реИ?
рдЖрдЗрдП рдЙрджрд╛рд╣рд░рдгреЛрдВ рдФрд░ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░реЗрдВ рдХрд┐ рдПрдХ рдкреЛрд░реНрдЯрд▓ рдХреНрдпрд╛ рд╣реИред рдкреЛрд░реНрдЯрд▓реНрд╕ рдХреЛ рдПрдХ рд╕реНрдерд╛рди рд╕реЗ рджреВрд╕рд░реЗ рд╕реНрдерд╛рди рддрдХ рдЬрд╛рдиреЗ рдХреЗ рд░рд╛рд╕реНрддреЗ рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рд╣реИред рдХреБрдЫ рд▓реЛрдХрдкреНрд░рд┐рдп рдЦреЗрд▓реЛрдВ рдореЗрдВ, рдЗрд╕ рдЕрд╡рдзрд╛рд░рдгрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рджреГрд╢реНрдп рдкреНрд░рднрд╛рд╡реЛрдВ рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЧреЗрдордкреНрд▓реЗ рдпрд╛рдВрддреНрд░рд┐рдХреА рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
рдЧреЗрдо рдкреЛрд░реНрдЯрд▓ рдЙрджрд╛рд╣рд░рдг (GIF)рдПрдВрдЯрд┐рдЪрдореНрдмрд░ (2013) рдФрд░ рдкреЛрд░реНрдЯрд▓ (2007)рдкреНрд░реАрдИ, 2006 рддреАрди рдЦреЗрд▓реЛрдВ рдореЗрдВ рд╕реЗ, рд╕рдмрд╕реЗ рдкреНрд░рд╕рд┐рджреНрдз рд╢рд╛рдпрдж рдкреЛрд░реНрдЯрд▓ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рд╣рдореЗрд╢рд╛ рдкреНрд░реАрддрд┐ рдХреА рдкреНрд░рд╢рдВрд╕рд╛ рдХреА рд╣реИ рдФрд░ рдпрд╣ рд╡рд╣ рдереА рдЬрд┐рд╕реЗ рдореИрдВ рдХреЙрдкреА рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред рдПрдХ рдмрд╛рд░ рдЬрдм рдореИрдВрдиреЗ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдЕрд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЗрдВрдЬрди 4 рдореЗрдВ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рд▓реЗрдХрд┐рди рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рдлрд▓ рдирд╣реАрдВ рд╣реБрдЖ, рдХреНрдпреЛрдВрдХрд┐ рдЗрдВрдЬрди рдореЗрдВ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреА рдХрдореА рдереАред рдлрд┐рд░ рднреА, рдореИрдВ рдЗрди рдкреНрд░рдпреЛрдЧреЛрдВ рдХрд╛ рд╕рдВрдЪрд╛рд▓рди рдХрд░рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣рд╛:
рд╣рд╛рд▓рд╛рдБрдХрд┐, рдХреЗрд╡рд▓ рдЕрд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЗрдВрдЬрди рдХреЗ рдирдП рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ рдореИрдВрдиреЗ рд╡рд╛рдВрдЫрд┐рдд рдкреНрд░рднрд╛рд╡ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд┐рдпрд╛:
рдкреЛрд░реНрдЯрд▓ - рд╡реЗ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ?
рдмрд╛рд░реАрдХрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдЖрдЧреЗ рдмрдврд╝рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдЖрдЗрдП рд╕рд╛рдорд╛рдиреНрдп рддрд╕реНрд╡реАрд░ рджреЗрдЦреЗрдВ рдХрд┐ рдкреЛрд░реНрдЯрд▓реНрд╕ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдПрдХ рдкреЛрд░реНрдЯрд▓ рдПрдХ рдЦрд┐рдбрд╝рдХреА рд╣реИ рдЬреЛ рдмрд╛рд╣рд░ рдирд╣реАрдВ рдЬрд╛рддреА рд╣реИ, рд▓реЗрдХрд┐рди рдХрд┐рд╕реА рдЕрдиреНрдп рд╕реНрдерд╛рди рдкрд░, рдЕрд░реНрдерд╛рддреН, рд╣рдо рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЛ рдХрд╣реАрдВ рдФрд░ рджреЛрд╣рд░рд╛рддреЗ рд╣реИрдВред рдЗрд╕ рд╕рд┐рджреНрдзрд╛рдВрдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рд╣рдо рджреЛ рд╕реНрдерд╛рдиреЛрдВ рдХреЛ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ, рднрд▓реЗ рд╣реА рд╡реЗ рдПрдХ рджреВрд╕рд░реЗ рд╕реЗ рдмрд╣реБрдд рджреВрд░ рд╣реЛрдВред рдЦрд┐рдбрд╝рдХреА рдПрдХ рдореБрдЦреМрдЯрд╛ рдЬреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ рдЬреЛ рд╣рдореЗрдВ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдХрд┐ рдореВрд▓ рдПрдХ рдХреЗ рдмрдЬрд╛рдп рджреВрд╕рд░реА рдЬрдЧрд╣ рдХрд╣рд╛рдВ рдФрд░ рдХрдм рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдирд╛ рд╣реИред рдЪреВрдБрдХрд┐ рджреГрд╢реНрдп рдХрд╛ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдмрд┐рдВрджреБ рдХрд╣реАрдВ рдФрд░ рджреЛрд╣рд░рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд╕реЗ рд╣рдореЗрдВ рдирд┐рд░рдВрддрд░рддрд╛ рдХрд╛ рднреНрд░рдо рд╣реЛрддрд╛ рд╣реИред

рдЗрд╕ рдЫрд╡рд┐ рдореЗрдВ, рдХреИрдкреНрдЪрд░ рдбрд┐рд╡рд╛рдЗрд╕ (UE4 рдореЗрдВ рджреГрд╢реНрдп) рдЙрд╕ рд╕реНрдерд╛рди рдХреЗ рд╕рд╛рдордиреЗ рд╕реНрдерд┐рдд рд╣реИ рдЬреЛ рдЦрд┐рд▓рд╛рдбрд╝реА рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рджреЗрдЦреЗ рдЧрдП рд╕реНрдерд╛рди рд╕реЗ рдореЗрд▓ рдЦрд╛рддреА рд╣реИред рд╕рдм рдХреБрдЫ рдЬреЛ рд▓рд╛рдЗрди рдХреЗ рдмрд╛рдж рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ рдЙрд╕реЗ рдХреИрдкреНрдЪрд░ рдХреЗ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЪреВрдВрдХрд┐ рдХреИрдкреНрдЪрд░ рдбрд┐рд╡рд╛рдЗрд╕ рджрд░рд╡рд╛рдЬреЗ рдФрд░ рдЕрдиреНрдп рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдмреАрдЪ рд╕реНрдерд┐рдд рд╣реЛ рд╕рдХрддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рддрдерд╛рдХрдерд┐рдд "рдХреНрд▓рд┐рдкрд┐рдВрдЧ рдкреНрд▓реЗрди" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред рдкреЛрд░реНрдЯрд▓ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдо рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдкреЛрд░реНрдЯрд▓ рдХреЗ рд╕рд╛рдордиреЗ рджрд┐рдЦрд╛рдИ рджреЗрдиреЗ рд╡рд╛рд▓реА рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдорд╛рд╕реНрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрд▓реАрдкрд┐рдВрдЧ рдкреНрд▓реЗрди рд╣реЛред
рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рджреЗрдирд╛ред рд╣рдореЗрдВ рдЪрд╛рд╣рд┐рдП:
- рдЦрд┐рд▓рд╛рдбрд╝реА рдХрд╛ рд╕реНрдерд╛рди
- рдкреЛрд░реНрдЯрд▓ рдПрдВрдЯреНрд░реА рдкреЙрдЗрдВрдЯ
- рдкреЛрд░реНрдЯрд▓ рдирд┐рдХрд╛рд╕ рдмрд┐рдВрджреБ
- рдХреНрд▓рд┐рдкрд┐рдВрдЧ рдкреНрд▓реЗрди рдХреЗ рд╕рд╛рде рдХреНрд▓рд┐рдкрд┐рдВрдЧ рдбрд┐рд╡рд╛рдЗрд╕
рдЗрд╕реЗ рдЕрд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЗрдВрдЬрди рдореЗрдВ рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдП?
рдореИрдВрдиреЗ
рдкреНрд▓реЗрдпрд░рдХрдВрдЯреНрд░реЛрд▓рд░ рдФрд░
рдХреИрд░реЗрдХреНрдЯрд░ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рдмрдВрдзрд┐рдд рджреЛ рдореБрдЦреНрдп рд╡рд░реНрдЧреЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЕрдкрдирд╛ рд╕рд┐рд╕реНрдЯрдо рдмрдирд╛рдпрд╛ред
рдкреЛрд░реНрдЯрд▓ рд╡рд░реНрдЧ рдПрдХ рд╕рдЪреНрдЪреЗ рдкреЛрд░реНрдЯрд▓ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдмрд┐рдВрджреБ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рджреГрд╢реНрдп / рдирд┐рдХрд╛рд╕ рдмрд┐рдВрджреБ рд▓рдХреНрд╖реНрдп рдЕрднрд┐рдиреЗрддрд╛ рд╣реИред рдПрдХ
рдкреЛрд░реНрдЯрд▓ рдореИрдиреЗрдЬрд░ рднреА рд╣реИ, рдЬреЛ рдкреНрд▓реЗрдпрд░рдХрдВрдЯреНрд░реЛрд▓рд░ рджреНрд╡рд╛рд░рд╛ рдЬреЗрдирд░реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдХреИрд░реЗрдХреНрдЯрд░ рджреНрд╡рд╛рд░рд╛ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рд╡рд╣ рдкреНрд░рддреНрдпреЗрдХ рдкреЛрд░реНрдЯрд▓ рдХреЛ рд╕реНрддрд░ рдкрд░ рдкреНрд░рдмрдВрдзрд┐рдд рдФрд░ рдЕрдкрдбреЗрдЯ рдХрд░ рд╕рдХреЗ, рд╕рд╛рде рд╣реА рд╕реАрдирдХреЗрдкреНрдЯреНрдпреЛрд░ рдСрдмреНрдЬреЗрдХреНрдЯ (рдЬреЛ рд╕рднреА рдкреЛрд░реНрдЯрд▓реНрд╕ рдХреЗ рд▓рд┐рдП рд╕рд╛рдорд╛рдиреНрдп рд╣реИ) рдореЗрдВ рд╣реЗрд░рдлреЗрд░ рдХрд░ рд╕рдХреЗред
рдзреНрдпрд╛рди рд░рдЦреЗрдВ рдХрд┐ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдЖрдкрдХреЛ рдХреЛрдб рд╕реЗ рд╡рд░реНрдг рдФрд░ рдкреНрд▓реЗрдпрд░рдХрдВрдЯреНрд░реЛрд▓рд░ рдХрдХреНрд╖рд╛рдУрдВ рддрдХ рдкрд╣реБрдВрдЪ рдХреА рдЙрдореНрдореАрдж рдХрд░рддрд╛ рд╣реИред рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЙрдиреНрд╣реЗрдВ рдПрдХреНрд╕рдбреНрд░реЗрдЪрд░рдЪрд░ рдФрд░ рдПрдХреНрд╕рдбреНрд░реЗрдкрд▓реЗрдпрд░рдХрдВрдЯреНрд░реЛрд▓рд░ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред
рдПрдХ рдкреЛрд░реНрдЯрд▓ рдЕрднрд┐рдиреЗрддрд╛ рд╡рд░реНрдЧ рдмрдирд╛рдирд╛
рдЖрдЗрдП рдкреЛрд░реНрдЯрд▓ рдХреЗ рдЕрднрд┐рдиреЗрддрд╛ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░реЗрдВ, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ "рд╡рд┐рдВрдбреЛрдЬрд╝" рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЬрд┐рд╕рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╣рдо рд╕реНрддрд░ рдкрд░ рджреЗрдЦреЗрдВрдЧреЗред рдЕрднрд┐рдиреЗрддрд╛ рдХрд╛ рдХрд╛рд░реНрдп рд╡рд┐рднрд┐рдиреНрди рдкрджреЛрдВ рдФрд░ рдШреБрдорд╛рд╡реЛрдВ рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЦрд┐рд▓рд╛рдбрд╝реА рдкрд░ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рд╣реИред рд╡рд╣ рдпрд╣ рдкрд╣рдЪрд╛рдирдиреЗ рдореЗрдВ рднреА рд▓рдЧрд╛ рд░рд╣реЗрдЧрд╛ рдХрд┐ рдЦрд┐рд▓рд╛рдбрд╝реА рдкреЛрд░реНрдЯрд▓ рдХреЛ рдкрд╛рд░ рдХрд░ рдЬрд╛рдП, рдпрд╛ рдЙрд╕рдХрд╛ рдЯреЗрд▓реАрдкреЛрд░реНрдЯреЗрд╢рдиред
рдЕрднрд┐рдиреЗрддрд╛ рдХреА рд╡рд┐рд╕реНрддреГрдд рдЪрд░реНрдЪрд╛ рд╢реБрд░реВ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдореИрдВ рдХреБрдЫ рдЕрд╡рдзрд╛рд░рдгрд╛рдУрдВ рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░рддрд╛ рд╣реВрдВ рдЬреЛ рдореИрдВрдиреЗ рдкреЛрд░реНрдЯрд▓ рдкреНрд░рдгрд╛рд▓реА рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛рдИ рдереА:
- рдЧрдгрдирд╛ рдХреЗ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдЗрдирдХрд╛рд░ рдХреЗ рд▓рд┐рдП, рдкреЛрд░реНрдЯрд▓ рдореЗрдВ рдПрдХ рд╕рдХреНрд░рд┐рдп-рдирд┐рд╖реНрдХреНрд░рд┐рдп рд╕реНрдерд┐рддрд┐ рд╣реИред рдпрд╣ рд╕реНрдерд┐рддрд┐ рдкреЛрд░реНрдЯрд▓ рдкреНрд░рдмрдВрдзрдХ рджреНрд╡рд╛рд░рд╛ рдЕрджреНрдпрддрди рдХреА рдЬрд╛рддреА рд╣реИред
- рдкреЛрд░реНрдЯрд▓ рдХреЗ рд╕рд╛рдордиреЗ рдФрд░ рдкреАрдЫреЗ рдХреА рдУрд░ рдХреА рд╕реНрдерд┐рддрд┐ рдФрд░ рджрд┐рд╢рд╛ (рдЖрдЧреЗ рдХрд╛ рд╡реЗрдХреНрдЯрд░) рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╣реЛрддреА рд╣реИред
- рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдХреНрдпрд╛ рдЦрд┐рд▓рд╛рдбрд╝реА рдкреЛрд░реНрдЯрд▓ рдХреЛ рдкрд╛рд░ рдХрд░рддрд╛ рд╣реИ, рд╡рд╣ рдЦрд┐рд▓рд╛рдбрд╝реА рдХреА рдкрд┐рдЫрд▓реА рд╕реНрдерд┐рддрд┐ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╡рд░реНрддрдорд╛рди рдХреЗ рд╕рд╛рде рддреБрд▓рдирд╛ рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдкрд┐рдЫрд▓реЗ рдорд╛рдк рдореЗрдВ рдЦрд┐рд▓рд╛рдбрд╝реА рдкреЛрд░реНрдЯрд▓ рдХреЗ рд╕рд╛рдордиреЗ рдерд╛, рдФрд░ рд╡рд░реНрддрдорд╛рди рдореЗрдВ - рдЙрд╕рдХреЗ рдкреАрдЫреЗ, рддреЛ рд╣рдо рдорд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдЦрд┐рд▓рд╛рдбрд╝реА рдиреЗ рдЗрд╕реЗ рдкрд╛рд░ рдХрд┐рдпрд╛ред рдЙрд▓реНрдЯреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдирдЬрд░рдЕрдВрджрд╛рдЬ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
- рдкреЛрд░реНрдЯрд▓ рдореЗрдВ рдПрдХ рд╕реАрдорд┐рдд рдорд╛рддреНрд░рд╛ рд╣реЛрддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЬрдм рддрдХ рдЦрд┐рд▓рд╛рдбрд╝реА рдЗрд╕ рд╡реЙрд▓реНрдпреВрдо рдореЗрдВ рдирд╣реАрдВ рд╣реЛ, рддрдм рддрдХ рдЧрдгрдирд╛ рдФрд░ рдЬрд╛рдВрдЪ рди рдХрд░реЗрдВред рдЙрджрд╛рд╣рд░рдг: рдпрджрд┐ рдЦрд┐рд▓рд╛рдбрд╝реА рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкреЛрд░реНрдЯрд▓ рдХреЛ рдирд╣реАрдВ рдЫреВ рд░рд╣рд╛ рд╣реИ, рддреЛ рдЪреМрд░рд╛рд╣реЗ рдХреА рдЙрдкреЗрдХреНрд╖рд╛ рдХрд░реЗрдВред
- рдЦрд┐рд▓рд╛рдбрд╝реА рдХреЗ рд╕реНрдерд╛рди рдХреА рдЧрдгрдирд╛ рдХреИрдорд░реЗ рдХреЗ рд╕реНрдерд╛рди рд╕реЗ рдХреА рдЬрд╛рддреА рд╣реИ рддрд╛рдХрд┐ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗ рдХрд┐ рдЬрдм рд╡реНрдпреВ рдкреЙрдЗрдВрдЯ рдкреЛрд░реНрдЯрд▓ рд╕реЗ рдкрд╛рд░ рд╣реЛ рдЬрд╛рдП, рд▓реЗрдХрд┐рди рдЦрд┐рд▓рд╛рдбрд╝реА рдХрд╛ рд╢рд░реАрд░ рди рд╣реЛред
- рдкреЛрд░реНрдЯрд▓ рдПрдХ рд░реЗрдВрдбрд░ рдЯрд╛рд░рдЧреЗрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдХрд┐ рдЕрдЧрд▓реА рдмрд╛рд░ рдмрдирд╛рд╡рдЯ рдЧрд▓рдд рд╣реЛрдиреЗ рдкрд░ рдкреНрд░рддреНрдпреЗрдХ рдЙрдкрд╛рдп рдореЗрдВ рдПрдХ рдЕрд▓рдЧ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред
- рдкреЛрд░реНрдЯрд▓ рдЯрд╛рд░рдЧреЗрдЯ рдирд╛рдордХ рдПрдХ рдЕрдиреНрдп рдЕрднрд┐рдиреЗрддрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рд┐рдВрдХ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИ, рддрд╛рдХрд┐ рдпрд╣ рдкрддрд╛ рдЪрд▓ рд╕рдХреЗ рдХрд┐ рджреВрд╕рд░реЗ рд╕реНрдерд╛рди рдкрд░ рдХрд╣рд╛рдВ рд╕рдВрдкрд░реНрдХ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рд╣реИред
рдЗрди рдирд┐рдпрдореЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдореИрдВрдиреЗ рдПрдПрдХреНрдЯрд░ рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓реА рдПрдХ рдирдИ рдПрдХреНрд╕рдбрд░рдкрд╛рд░реНрдЯрд▓ рдХреНрд▓рд╛рд╕ рдмрдирд╛рдИ, рдЬреЛ рдПрдХ рд╢реБрд░реБрдЖрддреА рдмрд┐рдВрджреБ рд╣реИред рдпрд╣рд╛рдБ рдЗрд╕рдХрд╛ рд╢реАрд░реНрд╖рдХ рд╣реИ:
#pragma once #include "CoreMinimal.h" #include "GameFramework/Actor.h" #include "ExedrePortal.generated.h" UCLASS() class EXEDRE_API AExedrePortal : public AActor { GENERATED_UCLASS_BODY() protected: virtual void BeginPlay() override; public: virtual void Tick(float DeltaTime) override;
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╣рд╛рдВ рд╡рд░реНрдгрд┐рдд рдЕрдзрд┐рдХрд╛рдВрд╢ рд╡реНрдпрд╡рд╣рд╛рд░ рд╣реИрдВред рдЕрдм рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рд╢рд░реАрд░ рдореЗрдВ (.cpp) рдХреИрд╕реЗ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдпрд╣рд╛рдВ рдХрд╛ рдбрд┐рдЬрд╛рдЗрдирд░ рд░реВрдЯ рдХрдВрдкреЛрдиреЗрдВрдЯреНрд╕ рддреИрдпрд╛рд░ рдХрд░ рд░рд╣рд╛ рд╣реИред рдореИрдВрдиреЗ рджреЛ рдореВрд▓ рдШрдЯрдХ рдмрдирд╛рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛, рдХреНрдпреЛрдВрдХрд┐ рдкреЛрд░реНрдЯрд▓ рдЕрднрд┐рдиреЗрддрд╛ рдЧреНрд░рд╛рдлрд┐рдХ рдкреНрд░рднрд╛рд╡ рдФрд░ рдЯрдХрд░рд╛рд╡ / рдорд╛рдиреНрдпрддрд╛ рджреЛрдиреЛрдВ рдХреЛ рдЬреЛрдбрд╝ рджреЗрдЧрд╛ред рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░рд▓ рддрд░реАрдХреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереА рдХрд┐ рдмреНрд▓реВрдЯреВрде рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдпрд╛ рдЕрдиреНрдп рдЪрд╛рд▓ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдмрд┐рдирд╛ рдЦрд┐рдбрд╝рдХреА / рдкреЛрд░реНрдЯрд▓ рд╡рд┐рдорд╛рди рдХрд╣рд╛рдВ рд╣реИред PortalRootComponent рдкреЛрд░реНрдЯрд▓ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╕рднреА рдЧрдгрдирд╛рдУрдВ рдХрд╛ рдЖрдзрд╛рд░ рд╣реЛрдЧрд╛ред
рдкреЛрд░реНрдЯрд▓ рд░реВрдЯ рдбрд╛рдпрдирд╛рдорд┐рдХ рдкрд░ рд╕реЗрдЯ рд╣реИ, рдЕрдЧрд░ рдмреНрд▓реВрдкреНрд░рд┐рдВрдЯ рдХреНрд▓рд╛рд╕ рдЗрд╕реЗ рдПрдирд┐рдореЗрдЯ рдХрд░рддрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдУрдкрди / рдХреНрд▓реЛрдЬ рдПрдиреАрдореЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ)ред
рдХреЗрд╡рд▓ рдЧреЗрдЯ рдФрд░ рд╕реЗрдЯ рдХрд╛рд░реНрдп рд╣реИрдВ, рдФрд░ рдЕрдзрд┐рдХ рдХреБрдЫ рдирд╣реАрдВред рд╣рдо рджреВрд╕рд░реА рдЬрдЧрд╣ рд╕реЗ рдЧрддрд┐рд╡рд┐рдзрд┐ рдХреА рд╕реНрдерд┐рддрд┐ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░реЗрдВрдЧреЗред
bool AExedrePortal::IsActive() { return bIsActive; } void AExedrePortal::SetActive( bool NewActive ) { bIsActive = NewActive; }
рдЦрд╛рдХрд╛ рдШрдЯрдирд╛рдУрдВ, рдореИрдВ рд╕реА ++ рд╡рд░реНрдЧ рдореЗрдВ рдХреБрдЫ рднреА рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред
void AExedrePortal::ClearRTT_Implementation() { } void AExedrePortal::SetRTT_Implementation( UTexture* RenderTexture ) { } void AExedrePortal::ForceTick_Implementation() { }
рд▓рдХреНрд╖реНрдп рдЕрднрд┐рдиреЗрддрд╛ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдп рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ рдФрд░ рд╕реЗрдЯ рдХрд░реЗрдВред рдЗрд╕ рднрд╛рдЧ рдореЗрдВ рдФрд░ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИред
AActor* AExedrePortal::GetTarget() { return Target; } void AExedrePortal::SetTarget( AActor* NewTarget ) { Target = NewTarget; }
рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рд╛рде, рд╣рдо рдЖрд╕рд╛рдиреА рд╕реЗ рдЬрд╛рдВрдЪ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХреЛрдИ рдмрд┐рдВрджреБ рд╡рд┐рдорд╛рди рдХреЗ рд╕рд╛рдордиреЗ рд╣реИ рдпрд╛ рдирд╣реАрдВ рдФрд░ рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдпрд╣ рдПрдХ рдкреЛрд░реНрдЯрд▓ рд╣реИред рдлрд╝рдВрдХреНрд╢рди рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП UE4 рдЗрдВрдЬрди рдХреЗ FPlane рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред
bool AExedrePortal::IsPointInFrontOfPortal( FVector Point, FVector PortalLocation, FVector PortalNormal ) { FPlane PortalPlane = FPlane( PortalLocation, PortalNormal ); float PortalDot = PortalPlane.PlaneDot( Point );
рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╛рдВрдЪрддрд╛ рд╣реИ рдХрд┐ рдмрд┐рдВрджреБ рдиреЗ рдкреЛрд░реНрдЯрд▓ рд╡рд┐рдорд╛рди рдкрд╛рд░ рдХрд┐рдпрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВред рдпрд╣ рдпрд╣рд╛рдВ рд╣реИ рдХрд┐ рд╣рдо рдкреБрд░рд╛рдиреА рд╕реНрдерд┐рддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдмрд┐рдВрджреБ рдХреИрд╕реЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рдЖрдо рд╣реИ рддрд╛рдХрд┐ рдпрд╣ рдХрд┐рд╕реА рднреА рдЕрднрд┐рдиреЗрддрд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд╕рдХреЗ, рд▓реЗрдХрд┐рди рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЗрд╡рд▓ рдЦрд┐рд▓рд╛рдбрд╝реА рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдлрд╝рдВрдХреНрд╢рди рдкрд┐рдЫрд▓реЗ рдФрд░ рд╡рд░реНрддрдорд╛рди рд╕реНрдерд╛рди рдХреЗ рдмреАрдЪ рдПрдХ рджрд┐рд╢рд╛ / рдЦрдВрдб рдмрдирд╛рддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рдЬрд╛рдБрдЪрддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд╡реЗ рд╡рд┐рдорд╛рди рдХреЛ рдХрд╛рдЯрддреЗ рд╣реИрдВред рдпрджрд┐ рдРрд╕рд╛ рд╣реИ, рддреЛ рд╣рдо рдЬрд╛рдВрдЪрддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рд╕рд╣реА рджрд┐рд╢рд╛ рдореЗрдВ (рдЖрдЧреЗ рд╕реЗ рдкреАрдЫреЗ?) рдкрд╛рд░ рдХрд░рддрд╛ рд╣реИред
bool AExedrePortal::IsPointCrossingPortal( FVector Point, FVector PortalLocation, FVector PortalNormal ) { FVector IntersectionPoint; FPlane PortalPlane = FPlane( PortalLocation, PortalNormal ); float PortalDot = PortalPlane.PlaneDot( Point ); bool IsCrossing = false; bool IsInFront = PortalDot >= 0; bool IsIntersect = FMath::SegmentPlaneIntersection( LastPosition, Point, PortalPlane, IntersectionPoint );
рдЯреЗрд▓реАрдкреЛрд░реНрдЯ рдПрдХреНрдЯрд░
рдкреЛрд░реНрдЯрд▓ рдЕрднрд┐рдиреЗрддрд╛ рдХрд╛ рдЕрдВрддрд┐рдо рднрд╛рдЧ рдЬрд┐рд╕реЗ рд╣рдо рджреЗрдЦреЗрдВрдЧреЗ рд╡рд╣
TeleportActor () рдлрд╝рдВрдХреНрд╢рди рд╣реИред
рдмрд┐рдВрджреБ A рд╕реЗ рдмрд┐рдВрджреБ B рддрдХ рдХрд┐рд╕реА рдЕрднрд┐рдиреЗрддрд╛ рдХреЛ рдЯреЗрд▓реАрдкреЛрд░реНрдЯ рдХрд░рддреЗ рд╕рдордп, рдЖрдкрдХреЛ рдЗрд╕рдХреЗ рдЖрдВрджреЛрд▓рди рдФрд░ рд╕реНрдерд┐рддрд┐ рдХреЛ рджреЛрд╣рд░рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдХреЛрдИ рдЦрд┐рд▓рд╛рдбрд╝реА рдкреЛрд░реНрдЯрд▓ рдореЗрдВ рдЧреБрдЬрд░рддрд╛ рд╣реИ, рддреЛ рдЙрдкрдпреБрдХреНрдд рджреГрд╢реНрдп рдкреНрд░рднрд╛рд╡реЛрдВ рдХреЗ рд╕рдВрдпреЛрдЬрди рдореЗрдВ, рдпрд╣ рдЙрд╕реЗ рдкреНрд░рддреАрдд рд╣реЛрдЧрд╛ рдХрд┐ рд╡рд╣ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рджрд░рд╡рд╛рдЬреЗ рд╕реЗ рдЧреБрдЬрд░рд╛ рд╣реИред
рдкреЛрд░реНрдЯрд▓ рдХрд╛ рдЪреМрд░рд╛рд╣рд╛ рдПрдХ рд╕реАрдзреА рд░реЗрдЦрд╛ рдореЗрдВ рдЬрд╛рдиреЗ рдЬреИрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреБрдЫ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ рд╣реЛрддрд╛ рд╣реИред рдкреЛрд░реНрдЯрд▓ рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рдкрд░, рдЦрд┐рд▓рд╛рдбрд╝реА рдмрд╣реБрдд рдЕрд▓рдЧ рд╕рдВрджрд░реНрдн рдореЗрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдкреЛрд░реНрдЯрд▓ рд╕реЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдкреЛрд░реНрдЯрд▓ рдХреЛ рдкрд╛рд░ рдХрд░рддреЗ рд╕рдордп, рдХреИрдорд░рд╛ рдЕрдкрдиреЗ рдЖрдЧреЗ рд╡реЗрдХреНрдЯрд░ (рд░реЛрдЯреЗрдЯреНрд╕) рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рдШреВрдорддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдХрд╛рд░рдг рдпрд╣ рд╣реИ рдХрд┐ рдкреНрд░рд╛рд░рдВрдн рдФрд░ рдЕрдВрдд рдмрд┐рдВрджреБ рд╡рд┐рднрд┐рдиреНрди рд╡рд┐рдорд╛рдиреЛрдВ рдХреЗ рд╕рдорд╛рдирд╛рдВрддрд░ рд╣реИрдВ:

рдЗрд╕рд▓рд┐рдП, рдЗрд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдЦрд┐рд▓рд╛рдбрд╝реА рдХреЗ рдЖрдВрджреЛрд▓рди рдХреЛ рдкреЛрд░реНрдЯрд▓ рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рд╕реНрдерд╛рди рдореЗрдВ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ рдЗрд╕реЗ рд▓рдХреНрд╖реНрдп рд╕реНрдерд╛рди рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗред рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рд╕реЗ, рд╣рдо рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдкреЛрд░реНрдЯрд▓ рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рдиреЗ рдФрд░ рджреВрд╕рд░реА рддрд░рдл рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рдХреЗ рдмрд╛рдж, рдЦрд┐рд▓рд╛рдбрд╝реА рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдЕрдВрддрд░рд┐рдХреНрд╖ рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ рдЧрдардмрдВрдзрди рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдпрд╣ рди рдХреЗрд╡рд▓ рдЕрднрд┐рдиреЗрддрд╛ рдХреА рд╕реНрдерд┐рддрд┐ рдФрд░ рд░реЛрдЯреЗрд╢рди рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИ, рдмрд▓реНрдХрд┐ рдЙрд╕рдХреА
рдЧрддрд┐ рдкрд░ рднреА рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИред
рдЕрдЧрд░ рд╣рдо рдХрд┐рд╕реА рдЕрднрд┐рдиреЗрддрд╛ рдХреЛ рдмрд┐рдирд╛ рдХрд┐рд╕реА рдмрджрд▓рд╛рд╡ рдХреЗ рдПрдХ рд╕реНрдерд╛рдиреАрдп рд░реЛрдЯреЗрд╢рди рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░ рджреЗрддреЗ рд╣реИрдВ, рддреЛ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдЕрднрд┐рдиреЗрддрд╛ рдЦреБрдж рдХреЛ рдЙрд▓реНрдЯрд╛ рдкрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдкрд╛рддреНрд░реЛрдВ рдпрд╛ рд╕реНрд╡рдпрдВ рдЦрд┐рд▓рд╛рдбрд╝реА рдХреЗ рд▓рд┐рдП рд▓рд╛рдЧреВ рдирд╣реАрдВ рд╣реЛрддрд╛ред рдЖрдкрдХреЛ рдЕрднрд┐рдиреЗрддрд╛ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдкреЛрд░реНрдЯрд▓ рд╕реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдКрдкрд░ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред
void AExedrePortal::TeleportActor( AActor* ActorToTeleport ) { if( ActorToTeleport == nullptr || Target == nullptr ) { return; }
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдкрдиреЗ рд╢рд╛рдпрдж рджреЗрдЦрд╛, рд░реЛрдЯреЗрд╢рди / рд╕реНрдерд┐рддрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдмрд╛рд╣рд░реА рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реВрдВред рдЙрдиреНрд╣реЗрдВ UTool рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╡рд░реНрдЧ рд╕реЗ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рд╕реНрдереИрддрд┐рдХ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдХрд╣реАрдВ рд╕реЗ рднреА (рдмреНрд▓реВрдкреНрд░рд┐рдВрдЯ рд╕рд╣рд┐рдд) рдХрд╣рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЙрдирдХрд╛ рдХреЛрдб рдиреАрдЪреЗ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЖрдк рдЙрдиреНрд╣реЗрдВ рдЙрд╕ рддрд░рд╣ рд╕реЗ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдЖрдкрдХреЛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд▓рдЧрддрд╛ рд╣реИ (рдпрд╣ рд╕рд┐рд░реНрдл рдкреЛрд░реНрдЯрд▓ рдкреЛрд░реНрдЯрд▓ рдЧреНрд░реБрдк рдореЗрдВ рдЙрдиреНрд╣реЗрдВ рдбрд╛рд▓рдирд╛ рдЖрд╕рд╛рди рд╣реИ)ред
FVector ConvertLocationToActorSpace( FVector Location, AActor* Reference, AActor* Target ) { if( Reference == nullptr || Target == nullptr ) { return FVector::ZeroVector; } FVector Direction = Location - Reference->GetActorLocation(); FVector TargetLocation = Target->GetActorLocation(); FVector Dots; Dots.X = FVector::DotProduct( Direction, Reference->GetActorForwardVector() ); Dots.Y = FVector::DotProduct( Direction, Reference->GetActorRightVector() ); Dots.Z = FVector::DotProduct( Direction, Reference->GetActorUpVector() ); FVector NewDirection = Dots.X * Target->GetActorForwardVector() + Dots.Y * Target->GetActorRightVector() + Dots.Z * Target->GetActorUpVector(); return TargetLocation + NewDirection; }
рд╡рд┐рднрд┐рдиреНрди рдХреЛрдгреЛрдВ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡реИрдХреНрдЯрд░ рдХреЗ рд╕реНрдХреЗрд▓рд░ рдЙрддреНрдкрд╛рдж рдХреА рдЧрдгрдирд╛ рдХрд░рдХреЗ рдпрд╣рд╛рдВ рдкрд░рд┐рд╡рд░реНрддрди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рджрд┐рд╢рд╛ рд╡реЗрдХреНрдЯрд░ рдХреЛ рд╕рд╛рдорд╛рдиреНрдпреАрдХреГрдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рдд, рд╣рдо рдлрд┐рд░ рд╕реЗ рд▓рдХреНрд╖реНрдп рд╡реИрдХреНрдЯрд░ рдХреЗ рджреНрд╡рд╛рд░рд╛ рдбреЙрдЯреНрд╕ рдкрд░рд┐рдгрд╛рдо рдХреЛ рдЧреБрдгрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рд▓рдХреНрд╖реНрдп рдЕрднрд┐рдиреЗрддрд╛ рдХреЗ рд╕реНрдерд╛рдиреАрдп рд╕реНрдерд╛рди рдкрд░ рдареАрдХ рдЙрд╕реА рджреВрд░реА рдкрд░ рд╕реНрдерд┐рддрд┐ рдкреНрд░рд╛рдкреНрдд рд╣реЛ рд╕рдХреЗред
FRotator ConvertRotationToActorSpace( FRotator Rotation, AActor* Reference, AActor* Target ) { if( Reference == nullptr || Target == nullptr ) { return FRotator::ZeroRotator; } FTransform SourceTransform = Reference->GetActorTransform(); FTransform TargetTransform = Target->GetActorTransform(); FQuat QuatRotation = FQuat( Rotation ); FQuat LocalQuat = SourceTransform.GetRotation().Inverse() * QuatRotation; FQuat NewWorldQuat = TargetTransform.GetRotation() * LocalQuat; return NewWorldQuat.Rotator(); }
рдкрд░рд┐рд╡рд░реНрддрди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдереЛрдбрд╝рд╛ рдХрдард┐рди рдерд╛ред рдЕрдВрдд рдореЗрдВ, рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╕рдорд╛рдзрд╛рди
рдЪрддреБрд░реНрдзрд╛рддреБрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд┐рдХрд▓рд╛, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╕рд╛рдорд╛рдиреНрдп
рдпреВрд▓рд░ рдХреЛрдг рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рд╕рдЯреАрдХ рд╣реИ рдФрд░ рдХреЛрдб рдХреА рдХреЗрд╡рд▓ рдХреБрдЫ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЧреБрдгрди рджреНрд╡рд╛рд░рд╛ рдШреВрд░реНрдгрди рдЧреБрдгрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЙрд▓рдЯрд╛ () рдХреЛ рд╣рдо рдЬрд┐рд╕ рд░реВрдкрд╛рдВрддрд░рдг рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдЙрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдХреЗ, рд╣рдо рдЗрд╕реЗ рд╕реНрдерд╛рдиреАрдп рд╕реНрдерд╛рди рдкрд░ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рджреЗрдВрдЧреЗред рдЕрдЧрд▓рд╛, рд╣рдореЗрдВ рдмрд╕ рдЕрдВрддрд┐рдо рдореЛрдбрд╝ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рдХреНрд╖реНрдп рдореЛрдбрд╝ рджреНрд╡рд╛рд░рд╛ рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рдЧреБрдгрд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдПрдХ рдкреЛрд░реНрдЯрд▓ рдореЗрд╖ рдмрдирд╛рдирд╛
рдХрд┐рд╕реА рдЦрд┐рд▓рд╛рдбрд╝реА рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рд╕реБрдВрджрд░ рджрд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП, рдореЗрд░рд╛ рдкреЛрд░реНрдЯрд▓ рд╕рд┐рд╕реНрдЯрдо рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЬрд╛рд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдЬрд╛рд▓ рдХреЛ рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╡рд┐рдорд╛рдиреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
- рд╡рд┐рдорд╛рди 1 : рдореБрдЦреНрдп рд╡рд┐рдорд╛рди рдЬрд┐рд╕ рдкрд░ рдкреЛрд░реНрдЯрд▓ рдХрд╛ рд░реЗрдВрдбрд░ рд▓рдХреНрд╖реНрдп рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрддрд╛ рд╣реИред рдЗрд╕ рд╡рд┐рдорд╛рди рдореЗрдВ рдПрдХ рдЕрд╕рд╛рдорд╛рдиреНрдп рд╡реНрдпрд╡рд╣рд╛рд░ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдХрд╛ рдХрд╛рд░реНрдп рдЦрд┐рд▓рд╛рдбрд╝реА рд╕реЗ рдереЛрдбрд╝рд╛ рдзрдХреНрдХрд╛ рджреЗрдирд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╡рд╣ рдХреИрдорд░реЗ рджреНрд╡рд╛рд░рд╛ рдХреНрд▓рд┐рдкрд┐рдВрдЧ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрдкрд░реНрдХ рдХрд░рддрд╛ рд╣реИред рдЪреВрдВрдХрд┐ рд╡рд┐рдорд╛рди рдХреА рд╕реАрдорд╛рдПрдВ рдирд╣реАрдВ рдЪрд▓рддреА рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдЗрд╕рдХреА рдордзреНрдп рдЪреЛрдЯрд┐рдпрд╛рдВ рдЪрд▓рддреА рд╣реИрдВ, рдЗрд╕рд╕реЗ рдЦрд┐рд▓рд╛рдбрд╝реА рдХреЛ рджреГрд╢реНрдп рдХрд▓рд╛рдХреГрддрд┐рдпреЛрдВ рдХреЗ рдмрд┐рдирд╛ рдкреЛрд░реНрдЯрд▓ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдкрд░ рд╕реБрдкрд░рдорд┐рд╢рди рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдорд┐рд▓рддреА рд╣реИред рдХрд┐рдирд╛рд░реЛрдВ рдкрд░ рдХрд┐рдирд╛рд░реЛрдВ рдХреЗ рдКрдкрд░реА рдЖрдзреЗ рд╣рд┐рд╕реНрд╕реЗ рдореЗрдВ рдЕрдкрдирд╛ рд╕реНрд╡рдпрдВ рдХрд╛ рдпреВрд╡реА рд╣реИ, рдЬрдмрдХрд┐ рдирд┐рдЪрд▓реЗ рдХрд┐рдирд╛рд░реЛрдВ рдореЗрдВ рдЖрдВрддрд░рд┐рдХ рдХрд┐рдирд╛рд░реЛрдВ рдХрд╛ рдЕрдкрдирд╛ рдпреВрд╡реА рд╣реИ, рдЬреЛ рдЙрдиреНрд╣реЗрдВ рдЫрд╛рдпрд╛ рдореЗрдВ рдореБрдЦреМрдЯрд╛ рдХрд░рдирд╛ рдЖрд╕рд╛рди рдмрдирд╛рддрд╛ рд╣реИред
- рд╡рд┐рдорд╛рди 2 : рдЗрд╕ рд╡рд┐рдорд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЗрд╡рд▓ рдореЗрд╖ рдХреЗ рдорд╛рдирдХ рдмрд╛рдЙрдВрдбрд┐рдВрдЧ рдмреЙрдХреНрд╕ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдХреЛрдиреЗ рдХреЗ рдорд╛рдирджрдВрдб рдиреАрдЪреЗ рдХреА рдУрд░ рдирд┐рд░реНрджреЗрд╢рд┐рдд рд╣реЛрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЧреИрд░-рдкреНрд▓рд╛рдирд░ рдЬрдореАрди рдкрд░ рднреА рдЬрд╛рд▓реА рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рджрд┐рдЦрд╛рдИ рдирд╣реАрдВ рджреЗрдЧреА (рдХреНрдпреЛрдВрдХрд┐ рд░реЗрдВрдбрд░рд┐рдВрдЧ рд╕рд╛рдордЧреНрд░реА рджреЛ рддрд░рдлрд╛ рдирд╣реАрдВ рд╣реЛрдЧреА)ред

рдХреНрдпреЛрдВ рдЗрд╕ рддрд░рд╣ рдПрдХ рдЬрд╛рд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ?
рдореИрдВрдиреЗ рддрдп рдХрд┐рдпрд╛ рдХрд┐ рдЦрд┐рд▓рд╛рдбрд╝реА рдХреЗ рдкрд╛рд╕ рдЖрддреЗ рд╣реА "рдкреНрд▓реЗрди 1" рдЦрд┐рдВрдЪ рдЬрд╛рдПрдЧрд╛ред рдпрд╣ рдЦрд┐рд▓рд╛рдбрд╝реА рдХреЛ рдкреЛрд░реНрдЯрд▓ рдХреЛ рдУрд╡рд░рд▓реИрдк рдХрд░рдиреЗ рдФрд░ рдЯреНрд░рд┐рдорд┐рдВрдЧ (рдХрдЯрд┐рдВрдЧ) рдХреЗ рдмрд┐рдирд╛ рдЗрд╕рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЧреБрдЬрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдпрд╣ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЕрдЧрд░ рдХреИрдорд░реЗ рдиреЗ рдЕрднреА рддрдХ рдкреЛрд░реНрдЯрд▓ рдХреЗ рд╡рд┐рдорд╛рди рдХреЛ рдкрд╛рд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЦрд┐рд▓рд╛рдбрд╝реА рдХреЗ рдкреИрд░ рдкрд╣рд▓реЗ рд╣реА рдЫреВ рдЪреБрдХреЗ рд╣реИрдВред рдЗрд╕рд╕реЗ рдЖрдк рдЦрд┐рд▓рд╛рдбрд╝реА рдХреЛ рдХрд╛рдЯ рдирд╣реАрдВ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рджреВрд╕рд░реА рддрд░рдл рдореЗрд╖ рдХреЛ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
"рд╡рд┐рдорд╛рди 2" рдХрд╛рд░реНрдп рдЬрд╛рд▓ рдХреЗ рдорд╛рдирдХ рдмрд╛рдЙрдВрдбрд┐рдВрдЧ рдмреЙрдХреНрд╕ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдирд╛ рд╣реИред рдЪреВрдБрдХрд┐ "рдкреНрд▓реЗрди 1" рд╕рдкрд╛рдЯ рд╣реИ, рдПрдХ рдЕрдХреНрд╖ рдкрд░ рдмрд╛рдЙрдВрдбрд┐рдВрдЧ рдмреЙрдХреНрд╕ рдХреА рдореЛрдЯрд╛рдИ 0 рд╣реИ, рдФрд░ рдпрджрд┐ рдХреИрдорд░рд╛ рдЗрд╕рдХреЗ рдкреАрдЫреЗ рд╣реИ, рддреЛ рдЗрдВрдЬрди рдЗрд╕реЗ рдХрд╛рдЯ рджреЗрдЧрд╛ (рдЕрд░реНрдерд╛рдд рдпрд╣ рдЗрд╕реЗ рд░реЗрдВрдбрд░ рдирд╣реАрдВ рдХрд░реЗрдЧрд╛)ред рдкреНрд▓реЗрди 1 рдХрд╛ рдЖрдХрд╛рд░ 128 ├Ч 128 рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рдЗрдВрдЬрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЖрд╕рд╛рдиреА рд╕реЗ рдмрдврд╝рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╡рд┐рдорд╛рди 2 рдордВрдЬрд┐рд▓ рд╕реЗ рдереЛрдбрд╝рд╛ рдмрдбрд╝рд╛ рдФрд░ рдиреАрдЪреЗ (0 рд╕реЗ рдиреАрдЪреЗ) рд╣реИред
рдореЗрд╖ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рдмрд╕ рдЗрд╕реЗ рддреГрддреАрдп-рдкрдХреНрд╖ 3D рд╕рдВрдкрд╛рджрдХ рд╕реЗ рдирд┐рд░реНрдпрд╛рдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЕрд╡рд╛рд╕реНрддрд╡рд┐рдХ рдореЗрдВ рдЖрдпрд╛рдд рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрдЧрд▓реЗ рдЪрд░рдг рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдкреЛрд░реНрдЯрд▓ рд╕рд╛рдордЧреНрд░реА рдмрдирд╛рдирд╛
рдкреЛрд░реНрдЯрд▓ рдХреЗ рджреВрд╕рд░реА рддрд░рдл рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдЕрдкрдиреА рд╕рд╛рдордЧреНрд░реА рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╕рд╛рдордЧреНрд░реА рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдирдИ рд╕рд╛рдордЧреНрд░реА рдмрдирд╛рдПрдВ (рдореИрдВрдиреЗ рдЗрд╕реЗ
MAT_PortalBase рдХрд╣рд╛ рд╣реИ):
рдЕрдм рдЗрд╕реЗ рдЦреЛрд▓реЗрдВ рдФрд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЧреНрд░рд╛рдл рдмрдирд╛рдПрдВ:
рдпрд╣рд╛рдВ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рд╕рд╛рдордЧреНрд░реА рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреА рд╣реИ:
- FadeColor рд░рдВрдЧ рд╣реИ рдЬреЛ рдкреЛрд░реНрдЯрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛ рдЬрдм рдпрд╣ рдмрд╣реБрдд рджреВрд░ рд╣реИред рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рд╣рдореЗрд╢рд╛ рд╕рднреА рдкреЛрд░реНрдЯрд▓реНрд╕ рдХреЛ рд░реЗрдВрдбрд░ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдкреНрд▓реЗрдпрд░ / рдХреИрдорд░рд╛ рджреВрд░ рд╣реЛрдиреЗ рдкрд░ рд░реЗрдВрдбрд░рд┐рдВрдЧ рдХреЛ рдЕрд╕реНрдкрд╖реНрдЯ рдХрд░рддреЗ рд╣реИрдВред
- рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдЦрд┐рд▓рд╛рдбрд╝реА рдкреЛрд░реНрдЯрд▓ рд╕реЗ рдХрд┐рддрдирд╛ рджреВрд░ рд╣реИ, рдореИрдВ рдХреИрдорд░рд╛ рд╕реНрдерд┐рддрд┐ рдФрд░ рдЕрднрд┐рдиреЗрддрд╛ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЗ рдмреАрдЪ рдХреА рджреВрд░реА рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реВрдВред рдлрд┐рд░ рдореИрдВ рдЙрд╕ рдЕрдзрд┐рдХрддрдо рдореВрд▓реНрдп рд╕реЗ рджреВрд░реА рдХреЛ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рддрд╛ рд╣реВрдВ рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдореИрдВ рддреБрд▓рдирд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдЕрдзрд┐рдХрддрдо I рд╕реЗрдЯ 2000 рд╣реИ, рдФрд░ рдЦрд┐рд▓рд╛рдбрд╝реА рд╕реЗ рджреВрд░реА 1000 рд╣реИ, рддреЛ рд╣рдореЗрдВ 0.5 рдорд┐рд▓рддрд╛ рд╣реИред рдпрджрд┐ рдЦрд┐рд▓рд╛рдбрд╝реА рдЖрдЧреЗ рд╣реИ, рддреЛ рдореБрдЭреЗ 1 рд╕реЗ рдЕрдзрд┐рдХ рдореВрд▓реНрдп рдорд┐рд▓реЗрдЧрд╛, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЗрд╕реЗ рд╕реАрдорд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрддреГрдкреНрдд рдиреЛрдбреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВред рдЕрдЧрд▓рд╛ рд╕реНрдореВрдерд╕реНрдЯреЗрдк рдиреЛрдб рдЖрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рджреВрд░реА рдХреЛ рдврд╛рд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдФрд░ рдЕрдзрд┐рдХ рд╕рдЯреАрдХ рд░реВрдк рд╕реЗ рдкреЛрд░реНрдЯрд▓ рдЫрд╛рдпрд╛рдВрдХрди рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореИрдВ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдЬрдм рдЦрд┐рд▓рд╛рдбрд╝реА рдХрд░реАрдм рд╣реЛ, рдЫрд╛рдпрд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЧрд╛рдпрдм рд╣реЛ рдЬрд╛рдПред
- рдореИрдВ рд╢реЗрдбрд┐рдВрдЧ рд░рдВрдЧ рдФрд░ рдмрдирд╛рд╡рдЯ рдХреЛ рдорд┐рд╢реНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП Lerp рдиреЛрдб рдХреЗ рд▓рд┐рдП рдЕрд▓реНрдлрд╛ рдЪреИрдирд▓ рдорд╛рди рдХреЗ рд░реВрдк рдореЗрдВ рджреВрд░реА рдХреА рдЧрдгрдирд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ рдЬреЛ рдкреЛрд░реНрдЯрд▓ рд▓рдХреНрд╖реНрдп рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд░реЗрдЧрд╛ред
- рдЕрдВрдд рдореЗрдВ, рдореИрдВ рдПрдХ рдореБрдЦреМрдЯрд╛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдпреВрд╡реА рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХреЗ рд╡рд╛рдИ рдШрдЯрдХ рдХреЛ рдЕрд▓рдЧ рдХрд░рддрд╛ рд╣реВрдВ рдЬреЛ рдЖрдкрдХреЛ рдпрд╣ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдЬрд╛рд▓ рдХреЗ рдХреМрди рд╕реЗ рдХреЛрдиреЗ рдХреЛ рдзрдХреНрдХрд╛ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдореБрдЭреЗ рдЗрд╕ рдорд╛рд╕реНрдХ рдХреЛ рдЙрд╕ рдкреНрд░рддрд┐рдХрд░реНрд╖рдг рд░рд╛рд╢рд┐ рд╕реЗ рдЧреБрдгрд╛ рдХрд░рдирд╛ рд╣реИ рдЬрд┐рд╕рдХреА рдореБрдЭреЗ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдореИрдВ рдПрдХ рдирдХрд╛рд░рд╛рддреНрдордХ рдореВрд▓реНрдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ рддрд╛рдХрд┐ рдЬрдм рдХреЛрдиреЗ рдХреЗ рдорд╛рдирджрдВрдб рдХреЛ рдЧреБрдгрд╛ рд╕реЗ рдЧреБрдгрд╛ рдХрд┐рдпрд╛ рдЬрд╛рдП, рддреЛ рд╡реЗ рд╡рд┐рдкрд░реАрдд рджрд┐рд╢рд╛ рдореЗрдВ рдЪрд▓рддреЗ рд╣реИрдВред
рдпрд╣ рд╕рдм рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдордиреЗ рддреИрдпрд╛рд░-рд╕реЗ-рдЙрдкрдпреЛрдЧ рд╕рд╛рдордЧреНрд░реА рддреИрдпрд╛рд░ рдХреАред
рдмреНрд▓реВрдкреНрд░рд┐рдВрдЯ рдореЗрдВ рдПрдХ рдкреЛрд░реНрдЯрд▓ рдЕрднрд┐рдиреЗрддрд╛ рдмрдирд╛рдирд╛
рдЖрдЗрдП рдкреЛрд░реНрдЯрд▓ рдЕрднрд┐рдиреЗрддрд╛ рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдПрдХ рдирдпрд╛ рдЦрд╛рдХрд╛ рддреИрдпрд╛рд░ рдХрд░реЗрдВред рд╕рд╛рдордЧреНрд░реА рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдкрд░ рд░рд╛рдЗрдЯ-рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ рдФрд░ рдмреНрд▓реВрдкреНрд░рд┐рдВрдЯ рдХреНрд▓рд╛рд╕ рдЪреБрдиреЗрдВ:
рдЕрдм рдкреЛрд░реНрдЯрд▓ рд╡рд░реНрдЧ рдХрд╛ рдЪрдпрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЦреЛрдЬ рдлрд╝реАрд▓реНрдб рдореЗрдВ "рдкреЛрд░реНрдЯрд▓" рджрд░реНрдЬ рдХрд░реЗрдВ:
рдпрджрд┐ рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рдЦреБрд▓рд╛ рди рд╣реЛ рддреЛ рдмреНрд▓реВрдЯреВрде рдЦреЛрд▓реЗрдВред рдШрдЯрдХреЛрдВ рдХреА рд╕реВрдЪреА рдореЗрдВ рдЖрдкрдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрджрд╛рдиреБрдХреНрд░рдо рджрд┐рдЦрд╛рдИ рджреЗрдВрдЧреЗ:
рдЬреИрд╕рд╛ рдХрд┐ рд╣рдордиреЗ рдЙрдореНрдореАрдж рдХреА рдереА, рдПрдХ рд░реВрдЯ рдХрдВрдкреЛрдиреЗрдВрдЯ рдФрд░ рдкреЛрд░реНрдЯрд▓ рд░реВрдЯ рд╣реИред рдЖрдЗрдП PortalRootComponent рдореЗрдВ рдПрдХ рд╕реНрдерд┐рд░ рдореЗрд╖ рдШрдЯрдХ рдЬреЛрдбрд╝реЗрдВ рдФрд░ рдкрд┐рдЫрд▓реЗ рдЪрд░рдг рдореЗрдВ рдмрдирд╛рдИ рдЧрдИ рдЬрд╛рд▓реА рдХреЛ рдЗрд╕рдореЗрдВ рд▓реЛрдб рдХрд░реЗрдВ:
рд╣рдо рдЯрдХрд░рд╛рд╡ рдмреЙрдХреНрд╕ рднреА рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдХрд┐ рдЦрд┐рд▓рд╛рдбрд╝реА рдкреЛрд░реНрдЯрд▓ рд╡реЙрд▓реНрдпреВрдо рдХреЗ рдЕрдВрджрд░ рд╣реИ:
рдЯрдХрд░рд╛рд╡ рдмреЙрдХреНрд╕ рдореБрдЦреНрдп рд░реВрдЯ рд╕реЗ рдЬреБрдбрд╝реЗ рджреГрд╢реНрдп рдШрдЯрдХ рдХреЗ рдиреАрдЪреЗ рд╣реИ, рдФрд░ рдкреЛрд░реНрдЯрд▓ рд░реВрдЯ рдХреЗ рддрд╣рдд рдирд╣реАрдВред рдореИрдВрдиреЗ рдкреЛрд░реНрдЯрд▓ рдкрд░ рд╕реНрддрд░реЛрдВ рдХреЛ рдЕрдзрд┐рдХ рджреГрд╢реНрдпрдорд╛рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрдЗрдХрди (рдмрд┐рд▓рдмреЛрд░реНрдб) рдФрд░ рдПрдХ рддреАрд░ рдШрдЯрдХ рднреА рдЬреЛрдбрд╝рд╛ред рдмреЗрд╢рдХ, рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИред
рдЕрдм рдмреНрд▓реВрдкреНрд░рд┐рдВрдЯ рдореЗрдВ рд╕рд╛рдордЧреНрд░реА рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВред
рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рджреЛ рдЪрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ - рдПрдХ рдкреНрд░рдХрд╛рд░
рдЕрднрд┐рдиреЗрддрд╛ рдХрд╛ рд╣реЛрдЧрд╛ рдФрд░ рдирд╛рдо
рдкреЛрд░реНрдЯрд▓рдЯрд╛рд░реНрдЧреЗрдЯ рдХрд╛ , рджреВрд╕рд░рд╛ рдкреНрд░рдХрд╛рд░
рдбрд╛рдпрдирд╛рдорд┐рдХ рдордЯреЗрд░рд┐рдпрд▓ рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдХрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ
рдореИрдЯреЗрд░рд┐рдпрд▓ рдЗрдирд╕реНрдЯреЗрдВрд╕ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдкреЛрд░реНрдЯрд▓рдЯрд╛рд░реНрдЧ рдЙрд╕ рд╕реНрдерд┐рддрд┐ рдХрд╛ рд╕рдВрджрд░реНрдн рд╣реЛрдЧрд╛ рдЬреЛ рдкреЛрд░реНрдЯрд▓ рд╡рд┐рдВрдбреЛ рджреЗрдЦ рд░рд╣реА рд╣реИ (рдЗрд╕рд▓рд┐рдП, рдЪрд░ рд╕рд╛рдорд╛рдиреНрдп рд╣реИ, рдПрдХ рдЦреБрд▓реА рдЖрдВрдЦ рдХреЗ рдЖрдЗрдХрди рдХреЗ рд╕рд╛рде) рддрд╛рдХрд┐ рд╣рдо рдЗрд╕реЗ рддрдм рдмрджрд▓ рд╕рдХреЗрдВ рдЬрдм рдЕрднрд┐рдиреЗрддрд╛ рдХреЛ рд╕реНрддрд░ рдкрд░ рд░рдЦрд╛ рдЧрдпрд╛ рд╣реЛред MaterialInstance рдбрд╛рдпрдиреЗрдорд┐рдХ рдордЯреЗрд░рд┐рдпрд▓ рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рд┐рдВрдХ рд╕реНрдЯреЛрд░ рдХрд░реЗрдЧрд╛ рддрд╛рдХрд┐ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рд╣рдо рдордХреНрдЦреА рдкрд░ рдкреЛрд░реНрдЯрд▓ рдХреЗ рд░реЗрдВрдбрд░ рдЯрд╛рд░рдЧреЗрдЯ рдХреЛ рдЕрд╕рд╛рдЗрди рдХрд░ рд╕рдХреЗрдВред
рд╣рдореЗрдВ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдИрд╡реЗрдВрдЯ рдиреЛрдбреНрд╕ рднреА рдЬреЛрдбрд╝рдиреЗ рд╣реЛрдВрдЧреЗред
рдИрд╡реЗрдВрдЯ рдЧреНрд░рд╛рдлрд╝ рдореЗрдВ рд░рд╛рдЗрдЯ-рдХреНрд▓рд┐рдХ рдореЗрдиреВ рдЦреЛрд▓рдиреЗ рдФрд░
рдИрд╡реЗрдВрдЯ рдХреЗ рдирд╛рдо рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣реИ:
рдФрд░ рдпрд╣рд╛рдБ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЪрд┐рддреНрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП:

- Play Play : рдпрд╣рд╛рдВ рд╣рдо рдЗрд╕реЗ рдЕрднрд┐рдиреЗрддрд╛ рдХреЛ рд▓рд┐рдВрдХ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдкреЛрд░реНрдЯрд▓ рдХреЗ рдореВрд▓ рдлрд╝рдВрдХреНрд╢рди SetTarget () рдХреЛ рдХрд╣рддреЗ рд╣реИрдВ, рдЬрд┐рд╕реЗ рдмрд╛рдж рдореЗрдВ SceneCapture рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдлрд┐рд░ рд╣рдо рдПрдХ рдирдпрд╛ рдбрд╛рдпрдирд╛рдорд┐рдХ рдордЯреЗрд░рд┐рдпрд▓ рдмрдирд╛рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ MaterialInstance рд╡реИрд░рд┐рдПрдмрд▓ рдХрд╛ рдорд╛рди рдЕрд╕рд╛рдЗрди рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕ рдирдИ рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде, рд╣рдо рдЗрд╕реЗ рд╕реНрдЯреИрдЯрд┐рдХ рдореЗрд╢ рдХрдВрдкреЛрдиреЗрдВрдЯ рдХреЛ рд╕реМрдВрдк рд╕рдХрддреЗ рд╣реИрдВред рдореИрдВрдиреЗ рд╕рд╛рдордЧреНрд░реА рдХреЛ рдПрдХ рдбрдореА рдмрдирд╛рд╡рдЯ рднреА рджрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдпрд╣ рд╡реИрдХрд▓реНрдкрд┐рдХ рд╣реИред
- Clear RTT : рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рдкреЛрд░реНрдЯрд▓ рд╕рд╛рдордЧреНрд░реА рдХреЛ рд╕реМрдВрдкреЗ рдЧрдП рд░реЗрдВрдбрд░ рдЯрд╛рд░рдЧреЗрдЯ рдХреА рдмрдирд╛рд╡рдЯ рдХреЛ рд╕рд╛рдлрд╝ рдХрд░рдирд╛ рд╣реИред рдЗрд╕реЗ рдкреЛрд░реНрдЯрд▓ рдкреНрд░рдмрдВрдзрдХ рджреНрд╡рд╛рд░рд╛ рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
- рд╕реЗрдЯ RTT : рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рдкреЛрд░реНрдЯрд▓ рдХреА рд░реЗрдВрдбрд░ рдЯрд╛рд░рдЧреЗрдЯ рд╕рд╛рдордЧреНрд░реА рдХреЛ рд╕реЗрдЯ рдХрд░рдирд╛ рд╣реИред рдЗрд╕реЗ рдкреЛрд░реНрдЯрд▓ рдкреНрд░рдмрдВрдзрдХ рджреНрд╡рд╛рд░рд╛ рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдЕрдм рддрдХ рд╣рдо рдмреНрд▓реВрдЯреВрде рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╣рдо рдмрд╛рдж рдореЗрдВ рдЯрд┐рдХ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рдПрдВрдЧреЗред
рдкреЛрд░реНрдЯрд▓ рдкреНрд░рдмрдВрдзрдХ
рдЗрд╕рд▓рд┐рдП, рдЕрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╕рднреА рдореВрд▓ рддрддреНрд╡ рд╣реИрдВ рдЬрд┐рдирдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдПрдПрдХреЗрдЖрд░ рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓реА рдПрдХ рдирдИ рдХрдХреНрд╖рд╛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ, рдЬреЛ рдкреЛрд░реНрдЯрд▓ рдореИрдиреЗрдЬрд░ рд╣реЛрдЧреАред рдЖрдкрдХреЛ рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдкреЛрд░реНрдЯрд▓ рдкреНрд░рдмрдВрдзрдХ рд╡рд░реНрдЧ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рдХреБрдЫ рдкрд╣рд▓реБрдУрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЛ рдмрд╣реБрдд рд╕рд░рд▓ рдХрд░рддрд╛ рд╣реИред рдпрд╣рд╛рдВ рдкреЛрд░реНрдЯрд▓ рдкреНрд░рдмрдВрдзрдХ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдП рдЧрдП рдХрд╛рд░реНрдпреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рджреА рдЧрдИ рд╣реИ:
- рдкреЛрд░реНрдЯрд▓ рдкреНрд░рдмрдВрдзрдХ рдПрдХ рдЦрд┐рд▓рд╛рдбрд╝реА рд╣реИ рдЬрд┐рд╕реЗ рдкреНрд▓реЗрдпрд░ рдХрдВрдЯреНрд░реЛрд▓рд░ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЦреЗрд▓ рд╕реНрддрд░ рдХреЗ рднреАрддрд░ рдЦрд┐рд▓рд╛рдбрд╝реА рдХреЗ рд░рд╛рдЬреНрдп рдФрд░ рд╡рд┐рдХрд╛рд╕ рдХреЛ рдЯреНрд░реИрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рд╕рдВрд▓рдЧреНрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
- рдЯрд╛рд░рдЧреЗрдЯ рдкреЛрд░реНрдЯрд▓ рдмрдирд╛рдПрдБ рдФрд░ рдирд╖реНрдЯ рдХрд░реЗрдВред рдпрд╣ рд╡рд┐рдЪрд╛рд░ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдПрдХ рд░реЗрдВрдбрд░ рдЯрд╛рд░рдЧреЗрдЯ рдмрдирд╛рд╡рдЯ рдмрдирд╛рдиреЗ рдХрд╛ рд╣реИ рдЬреЛ рдЦрд┐рд▓рд╛рдбрд╝реА рдХреЗ рд╕реНрдХреНрд░реАрди рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЦреЗрд▓ рдХреЗ рджреМрд░рд╛рди рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рдмрджрд▓рддреЗ рд╕рдордп, рдкреНрд░рдмрдВрдзрдХ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЗрд╕реЗ рд╡рд╛рдВрдЫрд┐рдд рдЖрдХрд╛рд░ рдореЗрдВ рдмрджрд▓ рджреЗрдЧрд╛ред
- рдкреЛрд░реНрдЯрд▓ рдкреНрд░рдмрдВрдзрдХ рдкреЛрд░реНрдЯрд▓ рд░реЗрдВрдбрд░ рд╕реНрддрд░ рдХреЛ рдвреВрдВрдврддрд╛ рд╣реИ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдЕрджреНрдпрддрди рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдПрдХ рдЯрд╛рд░рдЧреЗрдЯ рдЯрд╛рд░рдЧреЗрдЯ рджреЗрддрд╛ рд╣реИред рдпрд╣ рдХрд╛рд░реНрдп рдЗрд╕ рддрд░рд╣ рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддрд╛рдХрд┐ рд╕реНрддрд░ рд╕реНрдЯреНрд░реАрдорд┐рдВрдЧ рдХреЗ рд╕рд╛рде рд╕рдВрдЧрддрддрд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рд╣реЛ рд╕рдХреЗред рдЬрдм рдПрдХ рдирдпрд╛ рдЕрднрд┐рдиреЗрддрд╛ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ, рддреЛ рдЙрд╕реЗ рдПрдХ рдмрдирд╛рд╡рдЯ рдорд┐рд▓рдиреА рдЪрд╛рд╣рд┐рдПред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрджрд┐ рд░реЗрдВрдбрд░ рд▓рдХреНрд╖реНрдп рдмрджрд▓ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдкреНрд░рдмрдВрдзрдХ рдЕрдкрдиреЗ рдЖрдк рдПрдХ рдирдпрд╛ рднреА рдЕрд╕рд╛рдЗрди рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рд╕реЗ рд╕рд┐рд╕реНрдЯрдо рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдмрдЬрд╛рдп рдкреНрд░рддреНрдпреЗрдХ рдкреЛрд░реНрдЯрд▓ рдЕрднрд┐рдиреЗрддрд╛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдкреНрд░рдмрдВрдзрдХ рд╕реЗ рд╕рдВрдкрд░реНрдХ рдХрд░рдиреЗ рдХреЗред
- SceneCapture рдШрдЯрдХ рдкреЛрд░реНрдЯрд▓ рдкреНрд░рдмрдВрдзрдХ рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдкреНрд░рддреНрдпреЗрдХ рдкреЛрд░реНрдЯрд▓ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рддрд┐ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ рдЖрдкрдХреЛ рд╣рд░ рдмрд╛рд░ рдЬрдм рд╣рдо рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреЛрд░реНрдЯрд▓ рдЕрднрд┐рдиреЗрддрд╛ рдХреЗ рд╕реНрддрд░ рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕рдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
- рдЬрдм рдкреЛрд░реНрдЯрд▓ рдЦрд┐рд▓рд╛рдбрд╝реА рдХреЛ рдЯреЗрд▓реАрдкреЛрд░реНрдЯ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд░рддрд╛ рд╣реИ, рддреЛ рд╡рд╣ рдкреЛрд░реНрдЯрд▓ рдкреНрд░рдмрдВрдзрдХ рдХреЛ рдПрдХ рдЕрдиреБрд░реЛрдз рднреЗрдЬрддрд╛ рд╣реИред рд╕реНрд░реЛрдд рдФрд░ рдЧрдВрддрд╡реНрдп рджреЛрдиреЛрдВ (рдпрджрд┐ рдХреЛрдИ рд╣реЛ) рдкреЛрд░реНрдЯрд▓реНрд╕ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рддрд╛рдХрд┐ рд╕рдВрдХреНрд░рдордг рдмрд┐рдирд╛ рдЬреЛрдбрд╝реЛрдВ рдХреЗ рд╣реЛ рд╕рдХреЗред
- рдкреЛрд░реНрдЯрд▓ рдкреНрд░рдмрдВрдзрдХ рдХреЛ рдЕрдХреНрд╖рд░ рдЯрд┐рдХ () рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЕрдВрдд рдореЗрдВ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддрд╛рдХрд┐ рдЦрд┐рд▓рд╛рдбрд╝реА рдХреЗ рдХреИрдорд░реЗ рд╕рд╣рд┐рдд рд╕рдм рдХреБрдЫ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдЕрдкрдбреЗрдЯ рд╣реЛ рдЬрд╛рдПред рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╕реНрдХреНрд░реАрди рдкрд░ рд╕рдм рдХреБрдЫ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рд╣реИ рдФрд░ рдЗрдВрдЬрди рджреНрд╡рд╛рд░рд╛ рд░реЗрдВрдбрд░рд┐рдВрдЧ рдХреЗ рджреМрд░рд╛рди рдПрдХ рдлреНрд░реЗрдо рдХреА рджреЗрд░реА рд╕реЗ рдмрдЪрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЖрдЗрдП рдПрдХ рдирдЬрд░ рдбрд╛рд▓рддреЗ рд╣реИрдВ рдкреЛрд░реНрдЯрд▓ рдореИрдиреЗрдЬрд░ рд╣реЗрдбрд░ рдкрд░:
#pragma once #include "CoreMinimal.h" #include "GameFramework/Actor.h" #include "ExedrePortalManager.generated.h"
рд╡рд┐рд╡рд░рдг рдореЗрдВ рдЬрд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдореИрдВ рджрд┐рдЦрд╛рдКрдВрдЧрд╛ рдХрд┐ рдХреИрд╕реЗ рдПрдХ рдЦрд┐рд▓рд╛рдбрд╝реА рдкреНрд▓реЗрдпрд░ рдХрдВрдЯреНрд░реЛрд▓рд░ рдХреНрд▓рд╛рд╕ рд╕реЗ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдмрд┐рдЧрдкреНрд▓реЗ () рдлрд╝рдВрдХреНрд╢рди рд╕реЗ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ:
FActorSpawnParameters SpawnParams; PortalManager = nullptr; PortalManager = GetWorld()->SpawnActor<AExedrePortalManager>( AExedrePortalManager::StaticClass(), FVector::ZeroVector, FRotator::ZeroRotator, SpawnParams); PortalManager->AttachToActor( this, FAttachmentTransformRules::SnapToTargetIncludingScale); PortalManager->SetControllerOwner( this ); PortalManager->Init();
рдЗрд╕рд▓рд┐рдП, рд╣рдо рдПрдХ рдЕрднрд┐рдиреЗрддрд╛ рдмрдирд╛рддреЗ рд╣реИрдВ, рдЗрд╕реЗ рдЦрд┐рд▓рд╛рдбрд╝реА рдХреЗ рдирд┐рдпрдВрддреНрд░рдХ (рдпрд╣) рд╕реЗ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рдФрд░ рдлрд┐рд░ рд▓рд┐рдВрдХ рдХреЛ рд╕рд╣реЗрдЬрддреЗ рд╣реИрдВ рдФрд░ рдЗрдирд┐рдЯ () рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВред
рдпрд╣ рднреА рдзреНрдпрд╛рди рд░рдЦрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рд╣рдо рдЕрднрд┐рдиреЗрддрд╛ рдХреЛ рдЪрд░рд┐рддреНрд░ рд╡рд░реНрдЧ рд╕реЗ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдЕрдкрдбреЗрдЯ рдХрд░рддреЗ рд╣реИрдВ:
void AExedreCharacter::TickActor( float DeltaTime, enum ELevelTick TickType, FActorTickFunction& ThisTickFunction ) { Super::TickActor( DeltaTime, TickType, ThisTickFunction ); if( UGameplayStatics::GetPlayerController(GetWorld(), 0) != nullptr ) { AExedrePlayerController* EPC = Cast<AExedrePlayerController>( UGameplayStatics::GetPlayerController(GetWorld(), 0) ); EPC->PortalManager->Update( DeltaTime ); } }
рдФрд░ рдпрд╣рд╛рдБ рдкреЛрд░реНрдЯрд▓ рдореИрдиреЗрдЬрд░ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рд╣реИред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЯрд┐рдХ рдЕрдХреНрд╖рдо рд╣реИ, рдлрд┐рд░ рд╕реЗ рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдЦрд┐рд▓рд╛рдбрд╝реА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреЛрд░реНрдЯрд▓ рдкреНрд░рдмрдВрдзрдХ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВрдЧреЗред
AExedrePortalManager::AExedrePortalManager(const FObjectInitializer& ObjectInitializer) : Super(ObjectInitializer) { PrimaryActorTick.bCanEverTick = false; PortalTexture = nullptr; UpdateDelay = 1.1f; PreviousScreenSizeX = 0; PreviousScreenSizeY = 0; }
рдпрд╣рд╛рдВ рдкреЛрд░реНрдЯрд▓ рдореИрдиреЗрдЬрд░ рдкрд╛рдиреЗ / рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рдХрд╛рд░реНрдп рд╣реИрдВ (рдЙрд╕рдХреЗ рдмрд╛рдж рд╣рдо рдФрд░ рджрд┐рд▓рдЪрд╕реНрдк рдЪреАрдЬреЛрдВ рдкрд░ рдЖрдЧреЗ рдмрдврд╝реЗрдВрдЧреЗ):
void AExedrePortalManager::SetControllerOwner( AExedrePlayerController* NewOwner ) { ControllerOwner = NewOwner; } FTransform AExedrePortalManager::GetCameraTransform() { if( SceneCapture != nullptr ) { return SceneCapture->GetComponentTransform(); } else { return FTransform(); } } UTexture* AExedrePortalManager::GetPortalTexture() {
рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдкрд╣рд▓реА рдмрд╛рдд рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
Init () рдлрд╝рдВрдХреНрд╢рди рд╣реИред
рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдореБрдЦреНрдп рдЙрджреНрджреЗрд╢реНрдп рд╕реАрдирдХреИрдкреНрдЯреНрдпреЛрд░ рдШрдЯрдХ (рдЕрд░реНрдерд╛рдд, рдКрдкрд░ рдЙрд▓реНрд▓рд┐рдЦрд┐рдд рдХреИрдкреНрдЪрд░ рдбрд┐рд╡рд╛рдЗрд╕) рдмрдирд╛рдирд╛ рдФрд░ рдЗрд╕реЗ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛ рд╣реИред рдпрд╣ рдПрдХ рдирдП рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдФрд░ рдЗрд╕ рдЕрднрд┐рдиреЗрддрд╛ рдХреЗ рдШрдЯрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдЗрд╕рдХреЗ рдкрдВрдЬреАрдХрд░рдг рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИред рдлрд┐рд░ рд╣рдо рдЗрд╕ рдХреИрдкреНрдЪрд░ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдЧреБрдг рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝рддреЗ рд╣реИрдВредрдЙрд▓реНрд▓реЗрдЦ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЧреБрдг:- bCaptureEveryFrame = false : рд╣рдо рдпрд╣ рдирд╣реАрдВ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдЬрдм рд╣рдореЗрдВ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рди рд╣реЛ, рддреЛ рд╣рдо рдЗрд╕реЗ рдЪрд╛рд▓реВ рдХрд░ рджреЗрдВред рд╣рдо рдЗрд╕реЗ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░реЗрдВрдЧреЗред
- bEnableClipPlane = true : рдкреЛрд░реНрдЯрд▓ рдХреИрдкреНрдЪрд░ рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╕рдВрдкрддреНрддрд┐ред
- bUseCustomProjectionMatrix = true : рдпрд╣ рдЦрд┐рд▓рд╛рдбрд╝реА рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╣рдореЗрдВ рдХреИрдкреНрдЪрд░ рдкреНрд░реЛрдЬреЗрдХреНрд╢рди рдХреЛ рдЕрдкрдиреЗ рд╕реЗ рдмрджрд▓рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
- рдХреИрдкреНрдЪрд░рд╕реЛрд░реНрд╕ = ESceneCaptureSource :: SCS_SceneColorSceneDepth : рдпрд╣ рдореЛрдб рдереЛрдбрд╝рд╛ рдорд╣рдВрдЧрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдкрд░реНрдпрд╛рдкреНрдд рдорд╛рддреНрд░рд╛ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред
рд╢реЗрд╖ рдЧреБрдг рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдкреЛрд╕реНрдЯ-рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдорд╛рдкрджрдВрдбреЛрдВ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИрдВред рд╡реЗ рдЧреБрдгрд╡рддреНрддрд╛ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рддрд░реАрдХрд╛ рд╣реИрдВ, рдФрд░ рдЗрд╕рд▓рд┐рдП рдкреНрд░рджрд░реНрд╢рди рдкрд░ рдХрдмреНрдЬрд╛ рдХрд░рддреЗ рд╣реИрдВредрдЕрдВрддрд┐рдо рднрд╛рдЧ рдЙрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рд░реЗрдВрдбрд░ рдЯрд╛рд░рдЧреЗрдЯ рдмрдирд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рд╣рдо рдиреАрдЪреЗ рджреЗрдЦреЗрдВрдЧреЗред void AExedrePortalManager::Init() {
GeneratePortalTexture () рдПрдХ рдРрд╕рд╛ рдлрдВрдХреНрд╢рди рд╣реИ рдЬрд┐рд╕реЗ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдкрдбрд╝рдиреЗ рдкрд░ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рдЖрдкрдХреЛ рдкреЛрд░реНрдЯрд▓реНрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ рд░реЗрдВрдбрд░ рдЯрд╛рд░рдЧреЗрдЯ рдЯреЗрдХреНрд╕рдЪрд░ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдпрд╣ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдлрдВрдХреНрд╢рди рдореЗрдВ рд╣реЛрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдкреЛрд░реНрдЯрд▓ рдореИрдиреЗрдЬрд░ рдЕрдкрдЧреНрд░реЗрдб рдХреЗ рджреМрд░рд╛рди рднреА рдХрд╣рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рд╡реНрдпреВрдкреЛрд░реНрдЯ рдХреЗ рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреА рдЖрдВрддрд░рд┐рдХ рдЬрд╛рдВрдЪ рд╣реИред рдпрджрд┐ рдРрд╕рд╛ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдЕрджреНрдпрддрди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИредрдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдореИрдВрдиреЗ UCanvasRenderTarget2D рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрд╡рд░рдг рд╡рд░реНрдЧ рдмрдирд╛рдпрд╛ред рдореИрдВрдиреЗ рдЗрд╕реЗ ExedreScriptedTexture рдХрд╣рд╛ рд╣реИ, рдпрд╣ рдПрдХ рдШрдЯрдХ рд╣реИ рдЬрд┐рд╕реЗ рдПрдХ рдЕрднрд┐рдиреЗрддрд╛ рд╕реЗ рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдореИрдВрдиреЗ рдЗрд╕ рд╡рд░реНрдЧ рдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рдЙрди рдЕрднрд┐рдиреЗрддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рд▓рдХреНрд╖реНрдп рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛рдпрд╛ рд╣реИ рдЬрд┐рдирдХреЗ рдкрд╛рд╕ рдХрд╛рд░реНрдп рд╣реИрдВред рд╡рд╣ рд░реЗрдВрдбрд░ рдЯрд╛рд░рдЧреЗрдЯ рдХрд╛ рдЙрдЪрд┐рдд рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдХрд░рддрд╛ рд╣реИ рдФрд░ рдореЗрд░реЗ рдЕрдкрдиреЗ рдпреВрдЖрдИ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдЕрдиреБрдХреВрд▓ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдкреЛрд░реНрдЯрд▓реНрд╕ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ, рдПрдХ рдирд┐рдпрдорд┐рдд рд░реЗрдВрдбрд░рдЯрд╛рд░реНрдЧреЗрдЯ 2 рдбреА рдмрдирд╛рд╡рдЯ рдкрд░реНрдпрд╛рдкреНрдд рд╕реЗ рдЕрдзрд┐рдХ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдЖрдк рдмрд╕ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред void AExedrePortalManager::GeneratePortalTexture() { int32 CurrentSizeX = 1920; int32 CurrentSizeY = 1080; if( ControllerOwner != nullptr ) { ControllerOwner->GetViewportSize(CurrentSizeX, CurrentSizeY); } CurrentSizeX = FMath::Clamp( int(CurrentSizeX / 1.7), 128, 1920);
рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдореИрдВрдиреЗ рдЕрдкрдиреА рдЦреБрдж рдХреА рдХрдХреНрд╖рд╛ рдмрдирд╛рдИ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣рд╛рдВ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдЧреБрдг рд╕рд╛рдорд╛рдиреНрдп рд░реЗрдВрдбрд░ рдЯрд╛рд░рдЧреЗрдЯ рдХреЗ рдЕрдиреБрдХреВрд▓ рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдПредрдпрд╣ рд╕рдордЭрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рдХреИрдкреНрдЪрд░ рдХрд╣рд╛рдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЪреВрдВрдХрд┐ рдЧреЗрдо рдореЗрдВ рд░реЗрдВрдбрд░ рдЯрд╛рд░рдЧреЗрдЯ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдкреВрд░реЗ рдкреЛрд╕реНрдЯ-рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рд╕реЗ рдкрд╣рд▓реЗ рд╣реЛрдЧрд╛, рдФрд░ рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рдкрд░реНрдпрд╛рдкреНрдд рдЬрд╛рдирдХрд╛рд░реА (рдмреНрд▓реВрдо рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП 1 рд╕реЗ рдКрдкрд░ рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ) рдХреЗ рд╕рд╛рде рджреГрд╢реНрдп рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдореИрдВрдиреЗ RGBA16 рдкреНрд░рд╛рд░реВрдк рдХреЛ рдЪреБрдирд╛ (рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЗрд╕рдХрд╛ рдЕрдкрдирд╛ Enum рд╣реИ, рдЖрдкрдХреЛ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп ETextureRenderTargetFormat рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛)редрдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП, рдирд┐рдореНрди рд╕реНрд░реЛрдд рджреЗрдЦреЗрдВ:
рдЖрдЧреЗ рд╣рдо рдЕрджреНрдпрддрди рдХрд╛рд░реНрдпреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗред рдореВрд▓ рдХрд╛рд░реНрдп рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИ рдФрд░ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИред GeneratePortalTexture () рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдПрдХ рджреЗрд░реА рд╣реИ рдХрд┐ рд╡реНрдпреВрдкреЛрд░реНрдЯ рдХрд╛ рдЖрдХрд╛рд░ рдмрджрд▓рддреЗ рд╕рдордп рд░реЗрдВрдбрд░ рдЯрд╛рд░рдЧреЗрдЯ рдХреЛ рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдиреЗ рд╕реЗ рдмрдЪреЗрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕рдВрдкрд╛рджрдХ рдореЗрдВ)ред рдЦреЗрд▓ рдХреЗ рдкреНрд░рдХрд╛рд╢рди рдХреЗ рджреМрд░рд╛рди, рдЗрд╕ рджреЗрд░реА рдХреЛ рд╣рдЯрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред void AExedrePortalManager::Update( float DeltaTime ) {
рд╣рдо рд╡рд░реНрддрдорд╛рди рджреБрдирд┐рдпрд╛ рдореЗрдВ рдореМрдЬреВрдж рд╕рднреА рдкреЛрд░реНрдЯрд▓реНрд╕ (рд╕рднреА рд▓реЛрдб рдХрд┐рдП рдЧрдП рд╕реНрддрд░реЛрдВ рд╕рд╣рд┐рдд ) рдХреЛ рдЦреЛрдЬрдиреЗ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП UpdatePortalsInWorld () рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВред рдлрд╝рдВрдХреНрд╢рди рдпрд╣ рднреА рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХреМрди рд╕рд╛ "рд╕рдХреНрд░рд┐рдп" рд╣реИ, рдЕрд░реНрдерд╛рдд рдЦрд┐рд▓рд╛рдбрд╝реА рдХреЛ рджрд┐рдЦрд╛рдИред рдпрджрд┐ рд╣рдореЗрдВ рдПрдХ рд╕рдХреНрд░рд┐рдп рдкреЛрд░реНрдЯрд▓ рдорд┐рд▓рддрд╛ рд╣реИ, рддреЛ рд╣рдо UpdateCapture () рдХрд╣рддреЗ рд╣реИрдВ , рдЬреЛ SceneCapture рдШрдЯрдХ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реИред
рдпрд╣рд╛рдВ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рджреБрдирд┐рдпрд╛ рдЕрдкрдбреЗрдЯ UpdatePortalsInWorld () рдХреЗ рдЕрдВрджрд░ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреА рд╣реИ :- ( )
- iterator ,
- , , ClearRTT() , . (, ).
- , , , , .
рдкреЛрд░реНрдЯрд▓ рдХреА рд╢реБрджреНрдзрддрд╛ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдЪреЗрдХ рд╕рд░рд▓ рд╣реИ: рд╣рдо рдЦрд┐рд▓рд╛рдбрд╝реА рдХреЗ рдирд┐рдХрдЯрддрдо рдкреЛрд░реНрдЯрд▓ рдХреЛ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рджреЗрддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рд╡рд╣ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рдЕрдкрдиреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛ред рд░рд┐рд╢реНрддреЗрджрд╛рд░реЛрдВ рдХреЛ рдЫреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП, рд▓реЗрдХрд┐рди, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЦрд┐рд▓рд╛рдбрд╝реА рдХреЗ рдкреАрдЫреЗ рд╕реНрдерд┐рдд рдкреЛрд░реНрдЯрд▓, рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдЬрд╛рдВрдЪ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рд▓реЗрдХрд┐рди рдореИрдВ рдЕрдкрдиреЗ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдореЗрдВ рдЗрд╕ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдХрд╛рдлреА рдореБрд╢реНрдХрд┐рд▓ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред AExedrePortal* AExedrePortalManager::UpdatePortalsInWorld() { if( ControllerOwner == nullptr ) { return nullptr; } AExedreCharacter* Character = ControllerOwner->GetCharacter();
рдпрд╣ UpdateCapture () рдлрд╝рдВрдХреНрд╢рди рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рд╣реИ редрдпрд╣ рдПрдХ рдЕрдкрдЧреНрд░реЗрдб рдлреАрдЪрд░ рд╣реИ рдЬреЛ рдкреЛрд░реНрдЯрд▓ рдХреЗ рджреВрд╕рд░реЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЛ рдХреИрдкреНрдЪрд░ рдХрд░рддрд╛ рд╣реИред рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рд╕реЗ рд╕рдм рдХреБрдЫ рд╕реНрдкрд╖реНрдЯ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдпрд╣рд╛рдВ рдПрдХ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╡рд┐рд╡рд░рдг рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:- рд╣рдореЗрдВ рдХреИрд░реЗрдХреНрдЯрд░ рдФрд░ рдкреНрд▓реЗрдпрд░ рдХрдВрдЯреНрд░реЛрд▓рд░ рдХреЗ рд▓рд┐рдВрдХ рдорд┐рд▓рддреЗ рд╣реИрдВ ред
- рд╣рдо рдЬрд╛рдВрдЪрддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рд╕рдм рдХреБрдЫ рд╕рд╣реА рд╣реИ (рдкреЛрд░реНрдЯрд▓, рд╕реАрдирдХреИрдкреНрдЯреНрдпреЛрд░ рдШрдЯрдХ, рдкреНрд▓реЗрдпрд░)ред
- Camera Target .
- , SceneCapture.
- SceneCapture Target.
- , SceneCapure , , .
- Render Target SceneCapture, .
- PlayerController.
- , Capture SceneCapture .
рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдХрд┐рд╕реА рдЦрд┐рд▓рд╛рдбрд╝реА рдХреЛ рдЯреЗрд▓реАрдкреЛрд░реНрдЯ рдХрд░рддреЗ рд╕рдордп, SceneCapture рдХреЗ рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рдФрд░ рдирд┐рд░реНрджреЛрд╖ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд╛ рдПрдХ рдкреНрд░рдореБрдЦ рддрддреНрд╡ рд╕реНрдерд╛рдиреАрдп рдЯрд╛рд░рдЧреЗрдЯ рд╕реНрдкреЗрд╕ рдореЗрдВ рдкреЛрд░реНрдЯрд▓ рдХреА рд╕реНрдерд┐рддрд┐ рдФрд░ рд░реЛрдЯреЗрд╢рди рдХрд╛ рд╕рд╣реА рдкрд░рд┐рд╡рд░реНрддрди рд╣реИредConvertLocationToActorSpace () рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЗ рд▓рд┐рдП, "рдЯреЗрд▓реАрдкреЛрд░реНрдЯрд┐рдВрдЧ рдПрдХреНрдЯрд░" рджреЗрдЦреЗрдВред
void AExedrePortalManager::UpdateCapture( AExedrePortal* Portal ) { if( ControllerOwner == nullptr ) { return; } AExedreCharacter* Character = ControllerOwner->GetCharacter();
рдХрд╛рд░реНрдп GetCameraProjectionMatrix () рдХрдХреНрд╖рд╛ рдореЗрдВ рдбрд┐рдлрд╝реЙрд▓реНрдЯ PlayerController рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИ, рдореИрдВ рдЗрд╕реЗ рдЕрдкрдиреЗ рдЖрдк рдХреЛ рдЬреЛрдбрд╝рд╛ред рдЗрд╕реЗ рдиреАрдЪреЗ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ: FMatrix AExedrePlayerController::GetCameraProjectionMatrix() { FMatrix ProjectionMatrix; if( GetLocalPlayer() != nullptr ) { FSceneViewProjectionData PlayerProjectionData; GetLocalPlayer()->GetProjectionData( GetLocalPlayer()->ViewportClient->Viewport, EStereoscopicPass::eSSP_FULL, PlayerProjectionData ); ProjectionMatrix = PlayerProjectionData.ProjectionMatrix; } return ProjectionMatrix; }
рдЕрдВрдд рдореЗрдВ, рд╣рдореЗрдВ рдЯреЗрд▓реАрдкреЛрд░реНрдЯ рдлрд╝рдВрдХреНрд╢рди рдкрд░ рдХреЙрд▓ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдкреЛрд░реНрдЯрд▓ рдкреНрд░рдмрдВрдзрдХ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЯреЗрд▓реАрдкреЛрд░реНрдЯреЗрд╢рди рдХреЗ рдЖрдВрд╢рд┐рдХ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдХрд╛рд░рдг рдпрд╣ рд╣реИ рдХрд┐ рдЖрд╡рд╢реНрдпрдХ рдкреЛрд░реНрдЯрд▓реНрд╕ рдХреЗ рдЕрджреНрдпрддрди рдХреА рдЧрд╛рд░рдВрдЯреА рджреЗрдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдХреЗрд╡рд▓ рдкреНрд░рдмрдВрдзрдХ рдХреЛ рджреГрд╢реНрдп рдореЗрдВ рд╕рднреА рдкреЛрд░реНрдЯрд▓реНрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рд╣реИредрдпрджрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рджреЛ рдХрдиреЗрдХреНрдЯреЗрдб рдкреЛрд░реНрдЯрд▓реНрд╕ рд╣реИрдВ, рддреЛ рдПрдХ рд╕реЗ рджреВрд╕рд░реЗ рдореЗрдВ рд╕реНрд╡рд┐рдЪ рдХрд░рддреЗ рд╕рдордп, рд╣рдореЗрдВ рджреЛрдиреЛрдВ рдХреЛ рдПрдХ рдЯрд┐рдХ рдореЗрдВ рдЕрдкрдбреЗрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдЕрдиреНрдпрдерд╛, рдЦрд┐рд▓рд╛рдбрд╝реА рдЯреЗрд▓реАрдкреЛрд░реНрдЯ рдХрд░реЗрдЧрд╛ рдФрд░ рдкреЛрд░реНрдЯрд▓ рдХреЗ рджреВрд╕рд░реА рддрд░рдл рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рд▓рдХреНрд╖реНрдп рдкреЛрд░реНрдЯрд▓ рдЕрдЧрд▓реЗ рдлреНрд░реЗрдо / рдорд╛рдк рддрдХ рд╕рдХреНрд░рд┐рдп рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рдпрд╣ рд╡рд┐рдорд╛рди рдЬрд╛рд▓ рдХреА рдСрдлрд╕реЗрдЯ рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде рджреГрд╢реНрдп рдЕрдВрддрд░рд╛рд▓ рдмрдирд╛рдПрдЧрд╛ рдЬрд┐рд╕реЗ рд╣рдордиреЗ рдКрдкрд░ рджреЗрдЦрд╛ рдерд╛ред void AExedrePortalManager::RequestTeleportByPortal( AExedrePortal* Portal, AActor* TargetToTeleport ) { if( Portal != nullptr && TargetToTeleport != nullptr ) { Portal->TeleportActor( TargetToTeleport );
рдареАрдХ рд╣реИ, рдпрд╣ рд╣реИ, рд╣рдо рдЕрдВрдд рдореЗрдВ рдкреЛрд░реНрдЯрд▓ рдкреНрд░рдмрдВрдзрдХ рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рд╣реИ!рдЦрд╛рдХрд╛ рдЦрддреНрдо рдХрд░реЛ
рдкреЛрд░реНрдЯрд▓ рдкреНрд░рдмрдВрдзрдХ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдореЗрдВ рдХреЗрд╡рд▓ рдкреЛрд░реНрдЯрд▓ рдЕрднрд┐рдиреЗрддрд╛ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рд╕рд┐рд╕реНрдЯрдо рдХрд╛рдо рдХрд░реЗрдЧрд╛ред рдпрд╣рд╛рдВ рдХреЗрд╡рд▓ рдПрдХ рдЪреАрдЬ рдЧрд╛рдпрдм рд╣реИ рдЯрд┐рдХ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ:рдпрд╣рд╛рдВ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ:- рд╣рдо рд╕рд╛рдордЧреНрд░реА рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рддрд╛рдХрд┐ рдпрд╣ рд╕рдХреНрд░рд┐рдп рдЕрд╡рд╕реНрдерд╛ рдореЗрдВ рди рд░рд╣реЗред
- рдпрджрд┐ рдкреЛрд░реНрдЯрд▓ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдирд┐рд╖реНрдХреНрд░рд┐рдп рд╣реИ , рддреЛ рд╢реЗрд╖ рдЙрдкрд╛рдп рдХреЛ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
- рдХреИрдорд░рд╛ рд╕реНрдерд╛рди рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рдЪрд░рд┐рддреНрд░ рд╡рд░реНрдЧ рдорд┐рд▓рддрд╛ рд╣реИ ред
- рдкрд╣рд▓рд╛ рднрд╛рдЧ рдпрд╣ рдЬрд╛рдБрдЪрддрд╛ рд╣реИ рдХрд┐ рдХреИрдорд░рд╛ рдкреЛрд░реНрдЯрд▓ рдХреЗ рдЯрдХреНрдХрд░ рдмреЙрдХреНрд╕ рдореЗрдВ рд╣реИ рдпрд╛ рдирд╣реАрдВред рдпрджрд┐ рдРрд╕рд╛ рд╣реИ, рддреЛ рд╣рдо рдкреЛрд░реНрдЯрд▓ рдЬрд╛рд▓ рдХреЛ рдЗрд╕рдХреА рд╕рд╛рдордЧреНрд░реА рд╕реЗ рднрд░ рджреЗрддреЗ рд╣реИрдВ ред
- рджреВрд╕рд░рд╛ рднрд╛рдЧ рдЯрдХреНрдХрд░ рдмреЙрдХреНрд╕ рдХреЗ рдЕрдВрджрд░ рд╕реНрдерд╛рди рдХреЛ рдлрд┐рд░ рд╕реЗ рдЬрд╛рдВрдЪрдирд╛ рд╣реИред рдпрджрд┐ рдЗрд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╣рдо рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдпрд╣ рдЬрд╛рдВрдЪрддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд╣рдо рдкреЛрд░реНрдЯрд▓ рдХреЛ рдкрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ ред
- , Portal manager, Teleport .
рдореЗрд░реЗ рдЧреНрд░рд╛рдл рдХреЗ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рдореЗрдВ, рдЖрдк рджреЛ рджрд┐рд▓рдЪрд╕реНрдк рдмрд┐рдВрджреБрдУрдВ рдХреЛ рдиреЛрдЯрд┐рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: рдИрдПрд╕ рдкреНрд╡рд╛рдЗрдВрдЯ рдЗрдирд╕рд╛рдЗрдб рдмреЙрдХреНрд╕ рдФрд░ рдЧреЗрдЯ рдкреЛрд░реНрдЯрд▓ рдореИрдиреЗрдЬрд░ ред рдореИрдВрдиреЗ рдЕрднреА рддрдХ рдЗрди рджреЛрдиреЛрдВ рдХрд╛рд░реНрдпреЛрдВ рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдирд╣реАрдВ рдХреА рд╣реИред рдпреЗ рд╕реНрдерд┐рд░ рдХрд╛рд░реНрдп рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдореИрдВрдиреЗ рдЕрдкрдиреА рдХрдХреНрд╖рд╛ рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рд╣реИ рддрд╛рдХрд┐ рдЖрдк рдЙрдиреНрд╣реЗрдВ рдХрд╣реАрдВ рд╕реЗ рднреА рдмреБрд▓рд╛ рд╕рдХреЗрдВред рдпрд╣ рдПрдХ рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╕рд╣рд╛рдпрдХ рд╡рд░реНрдЧ рд╣реИред рдЗрди рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдХреЛрдб рдиреАрдЪреЗ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЖрдк рдЦреБрдж рддрдп рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдХрд╣рд╛рдВ рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░рдирд╛ рд╣реИред рдпрджрд┐ рдЖрдкрдХреЛ рдкреЛрд░реНрдЯрд▓ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдмрд╛рд╣рд░ рдЙрдирдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рддреЛ рдЖрдк рдЙрдиреНрд╣реЗрдВ рд╕реАрдзреЗ рдкреЛрд░реНрдЯрд▓ рдЕрднрд┐рдиреЗрддрд╛ рд╡рд░реНрдЧ рдореЗрдВ рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВредрд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдореИрдВ рдЯрдХреНрдХрд░ рдмреЙрдХреНрд╕ рдХреЗ рдЕрдВрджрд░ рдкреЛрд░реНрдЯрд▓ рдЕрднрд┐рдиреЗрддрд╛ рдХреЛ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдЯрдХрд░рд╛рд╡ рдкреНрд░рдгрд╛рд▓реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдпрд╣ рдореБрдЭреЗ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рдирд╣реАрдВ рд▓рдЧ рд░рд╣рд╛ рдерд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреЗрдЬрд╝ рд╣реИ рдФрд░ рдЗрд╕рдХрд╛ рдПрдХ рдлрд╛рдпрджрд╛ рд╣реИ: рдпрд╣ рдЕрднрд┐рдиреЗрддрд╛ рдХреЗ рд░реЛрдЯреЗрд╢рди рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддрд╛ рд╣реИред bool IsPointInsideBox( FVector Point, UBoxComponent* Box ) { if( Box != nullptr ) {
AExedrePortalManager* GetPortalManager( AActor* Context ) { AExedrePortalManager* Manager = nullptr;
рдмреНрд▓реВрдкреНрд░рд┐рдВрдЯ рдЕрднрд┐рдиреЗрддрд╛ рдХрд╛ рдЕрдВрддрд┐рдо рднрд╛рдЧ ForceTick рд╣реИ ред рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ рдлреЛрд░реНрд╕ рдЯрд┐рдХ рдЙрд╕ рд╕рдордп рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рдХреЛрдИ рдЦрд┐рд▓рд╛рдбрд╝реА рдХрд┐рд╕реА рдкреЛрд░реНрдЯрд▓ рдХреЛ рдкрд╛рд░ рдХрд░рддрд╛ рд╣реИ рдФрд░ рджреВрд╕рд░реЗ рдкреЛрд░реНрдЯрд▓ рдХреЗ рдмрдЧрд▓ рдореЗрдВ рд╣реЛрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдкреЛрд░реНрдЯрд▓ рдореИрдиреЗрдЬрд░ рдПрдХ рдЕрдкрдбреЗрдЯ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░рддрд╛ рд╣реИред рдЪреВрдВрдХрд┐ рд╣рдордиреЗ рдЕрднреА рдЯреЗрд▓реАрдкреЛрд░реНрдЯ рдХрд┐рдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╕рдорд╛рди рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдЖрдк рдЗрд╕рдХреЗ рд╕рд░рд▓реАрдХреГрдд рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЯрд┐рдХ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд░реВрдк рдореЗрдВ рд▓рдЧрднрдЧ рдЙрд╕реА рд╕рдордп рд╢реБрд░реВ рд╣реЛрддреА рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдо рдХреЗрд╡рд▓ рдЕрдиреБрдХреНрд░рдо рдХреЗ рдкрд╣рд▓реЗ рднрд╛рдЧ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рд╕рд╛рдордЧреНрд░реА рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рддрд╛ рд╣реИредрдХреНрдпрд╛ рд╣рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ?
рд▓рдЧрднрдЧредрдпрджрд┐ рд╣рдо рдЗрд╕ рд░реВрдк рдореЗрдВ рдкреЛрд░реНрдЯрд▓ рдкреНрд░рдгрд╛рд▓реА рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░реЗрдВрдЧреЗ:рдпрд╣рд╛рдБ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИ?рдЗрд╕ gif рдореЗрдВ, рдЧреЗрдо рдХреА рдлреНрд░реЗрдо рджрд░ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдФрд░ рдЕрдзрд┐рдХ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рджрд┐рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП 6 FPS рддрдХ рд╕реАрдорд┐рдд рд╣реИред рдПрдХ рдлреНрд░реЗрдо рдореЗрдВ, рдХреНрдпреВрдм рдЧрд╛рдпрдм рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЕрд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЗрдВрдЬрди рдХреНрд▓рд┐рдкрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдЗрд╕реЗ рдЕрджреГрд╢реНрдп рдорд╛рдирддрд╛ рд╣реИредрдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЦреЛрдЬ рдХреЛ рд╡рд░реНрддрдорд╛рди рдлреНрд░реЗрдо рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рдЕрдЧрд▓реЗ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдПрдХ рдлреНрд░реЗрдо рдХреА рджреЗрд░реА рдкреИрджрд╛ рдХрд░рддрд╛ рд╣реИ ред рдпрд╣ рдЖрдорддреМрд░ рдкрд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдмрд╛рдЙрдВрдбрд┐рдВрдЧ рдмреЙрдХреНрд╕ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдХреЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ рдпрд╣ рджрд┐рдЦрд╛рдИ рджреЗрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдкрдВрдЬреАрдХреГрдд рд╣реЛред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рдпрд╣рд╛рдВ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдЬрдм рд╣рдо рдкреЛрд░реНрдЯрд▓ рдХреЛ рдкрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдПрдХ рдЬрдЧрд╣ рд╕реЗ рдПрдХ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ рд╕реЗ рдЯреЗрд▓реАрдкреЛрд░реНрдЯ рдХрд░рддреЗ рд╣реИрдВредрдХрддрд░рди рдкреНрд░рдгрд╛рд▓реА рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рдирд╛ рднреА рдЕрд╕рдВрднрд╡ рд╣реИ, рдЦрд╛рд╕рдХрд░ рдХреНрдпреЛрдВрдХрд┐ рдХрдИ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд╕реНрддрд░ рдкрд░ рдпрд╣ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдХрдо рдХрд░реЗрдЧрд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореИрдВрдиреЗ рдЕрд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЗрдВрдЬрди рдХреА рдХрдИ рдЯреАрдореЛрдВ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рд▓реЗрдХрд┐рди рд╕рдХрд╛рд░рд╛рддреНрдордХ рдкрд░рд┐рдгрд╛рдо рдирд╣реАрдВ рдорд┐рд▓реЗ: рд╕рднреА рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдПрдХ рдлреНрд░реЗрдо рдХреА рджреЗрд░реА рдмрдиреА рд░рд╣реАред рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рдЕрд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЗрдВрдЬрди рд╕реНрд░реЛрдд рдХреЛрдб рдХреЗ рдПрдХ рд╡рд┐рд╕реНрддреГрдд рдЕрдзреНрдпрдпрди рдХреЗ рдмрд╛рдж, рдореИрдВ рдПрдХ рд╕рдорд╛рдзрд╛рди рдЦреЛрдЬрдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣рд╛ (рдкрде рд▓рдВрдмрд╛ рдерд╛ - рдЗрд╕рдореЗрдВ рдПрдХ рд╕рдкреНрддрд╛рд╣ рд╕реЗ рдЕрдзрд┐рдХ рд╕рдордп рд▓рдЧрд╛)!рд╕реАрдирдХреИрдкрдЪрд░ рдШрдЯрдХ рдХреЗ рд╕рд╛рде, рдЖрдк рдЦрд┐рд▓рд╛рдбрд╝реА рдХреЗ рдХреИрдорд░реЗ рдХреЛ рдмрддрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╣рдордиреЗ рдПрдХ рдЫрд▓рд╛рдВрдЧ рд▓рдЧрд╛рдИ рд╣реИ- рдХреИрдорд░реЗ рдХреА рд╕реНрдерд┐рддрд┐ рджреЛ рдлрд╝реНрд░реЗрдореЛрдВ рдХреЗ рдмреАрдЪ рдХреВрдж рдЧрдИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рд╣рдо рдкрд┐рдЫрд▓реЗ рдлреНрд░реЗрдо рдХреА рдЬрд╛рдирдХрд╛рд░реА рдкрд░ рднрд░реЛрд╕рд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдорддрд┐рдиреЗ рдпрд╛ рд╕реАрдХреНрд╡реЗрдВрд╕рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдпрд╣ рд╡реНрдпрд╡рд╣рд╛рд░ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЬрдм рдХреИрдорд░реЗ рд╕реНрд╡рд┐рдЪ рдХрд░рддреЗ рд╣реИрдВ: рдЧрддрд┐ рдзреБрдВрдзрд▓рд╛ рдпрд╛ рдЪреМрд░рд╕рд╛рдИ рдкрд┐рдЫрд▓реЗ рдлреНрд░реЗрдо рд╕реЗ рдЬрд╛рдирдХрд╛рд░реА рдкрд░ рднрд░реЛрд╕рд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреА рд╣реИредрдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рджреЛ рдкрд╣рд▓реБрдУрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:- LocalPlayer : рдпрд╣ рд╡рд░реНрдЧ рд╡рд┐рднрд┐рдиреНрди рдЬрд╛рдирдХрд╛рд░реА (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЦрд┐рд▓рд╛рдбрд╝реА рдХрд╛ рд╡реНрдпреВрдкреЛрд░реНрдЯ) рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдкреНрд▓реЗрдпрд░рдХрдВрдЯреНрд░реЛрд▓рд░ рдХреЗ рд╕рд╛рде рдЬреБрдбрд╝рд╛ рд╣реЛрддрд╛ рд╣реИред рдпрд╣ рд╡рд╣ рдЬрдЧрд╣ рд╣реИ рдЬрд╣рд╛рдВ рд╣рдо рдЦрд┐рд▓рд╛рдбрд╝реА рдХреЗ рдХреИрдорд░реЗ рдХреА рдкреНрд░рддрд┐рдкрд╛рджрди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
- рдкреНрд▓реЗрдпрд░рдХрдВрдЯреНрд░реЛрд▓рд░ : рдЬрдм рдХреЛрдИ рдЦрд┐рд▓рд╛рдбрд╝реА рдЯреЗрд▓реАрдкреЛрд░реНрдЯ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдХреНрд▓рд╛рд╕ рд▓реЛрдХрд▓рдкреЗрдпрд░ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж рд╢реБрд░реВ рдХрд░ рджреЗрддрд╛ рд╣реИред
рдЗрд╕ рд╕рдорд╛рдзрд╛рди рдХрд╛ рдмрдбрд╝рд╛ рдлрд╛рдпрджрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЗрдВрдЬрди рдХреА рд░реЗрдВрдбрд░рд┐рдВрдЧ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рд╣рд╕реНрддрдХреНрд╖реЗрдк рдЕрд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЗрдВрдЬрди рдХреЗ рднрд╡рд┐рд╖реНрдп рдХреЗ рдЕрдкрдбреЗрдЯ рдореЗрдВ рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдиреНрдпреВрдирддрдо рдФрд░ рдЖрд╕рд╛рди рд╣реИред
рдЪрд▓рд┐рдП рд╢реБрд░реБрдЖрдд рдХрд░рддреЗ рд╣реИрдВ рд▓реЛрдХрд▓рдкреЗрдпрд░ рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рд╛ рдПрдХ рдирдпрд╛ рд╡рд░реНрдЧ рдмрдирд╛рдиреЗ рдХреАред рдиреАрдЪреЗ рдПрдХ рд╢реАрд░реНрд╖рдХ рд╣реИ рдЬреЛ рджреЛ рдореБрдЦреНрдп рдШрдЯрдХреЛрдВ рдХреА рдкрд╣рдЪрд╛рди рдХрд░рддрд╛ рд╣реИ: рджреГрд╢реНрдп рд╡реНрдпреВрдкреЛрд░реНрдЯ рдЧрдгрдирд╛ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдирд╛ рдФрд░ рдХреИрдорд░рд╛ gluing рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ рдХрд╛рд░реНрдпред #pragma once #include "CoreMinimal.h" #include "Engine/LocalPlayer.h" #include "ExedreLocalPlayer.generated.h" UCLASS() class EXEDRE_API UExedreLocalPlayer : public ULocalPlayer { GENERATED_BODY() UExedreLocalPlayer(); public: FSceneView* CalcSceneView( class FSceneViewFamily* ViewFamily, FVector& OutViewLocation, FRotator& OutViewRotation, FViewport* Viewport, class FViewElementDrawer* ViewDrawer, EStereoscopicPass StereoPass) override; void PerformCameraCut(); private: bool bCameraCut; };
рдпрд╣рд╛рдВ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рд╕рдм рдХреБрдЫ рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ: #include "Exedre.h" #include "ExedreLocalPlayer.h" UExedreLocalPlayer::UExedreLocalPlayer() { bCameraCut = false; } FSceneView* UExedreLocalPlayer::CalcSceneView( class FSceneViewFamily* ViewFamily, FVector& OutViewLocation, FRotator& OutViewRotation, FViewport* Viewport, class FViewElementDrawer* ViewDrawer, EStereoscopicPass StereoPass) {
PerformCameraCut () рдмрд╕ рдмреВрд▓рд┐рдпрди рдорд╛рди рдХреЗ рд╕рд╛рде рдХреИрдорд░рд╛ рдХрдЯ рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИред рдЬрдм рдЗрдВрдЬрди CalcSceneView () рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ , рддреЛ рд╣рдо рдкрд╣рд▓реЗ рдореВрд▓ рдлрд╝рдВрдХреНрд╢рди рдЪрд▓рд╛рддреЗ рд╣реИрдВред рдлрд┐рд░ рд╣рдо рдЬрд╛рдВрдЪ рдХрд░рддреЗ рд╣реИрдВ, рд╣рдореЗрдВ рдЧреНрд▓реВрдЗрдВрдЧ рдкреНрд░рджрд░реНрд╢рди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрджрд┐ рд╣рд╛рдВ, рддреЛ рд╣рдо FSceneView рд╕рдВрд░рдЪрдирд╛ рдХреЗ рдЕрдВрджрд░ рдХреИрдорд░рд╛ рдХрдЯ рдмреБрд▓рд┐рдпрди рдЪрд░ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ , рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЗрдВрдЬрди рд░реЗрдВрдбрд░рд┐рдВрдЧ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдФрд░ рдлрд┐рд░ рдмреБрд▓рд┐рдпрди рдЪрд░ (рдЗрд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ) рдХреЛ рд░реАрд╕реЗрдЯ рдХрд░реЗрдВред
рдкреНрд▓реЗрдпрд░ рдХрдВрдЯреНрд░реЛрд▓рд░ рд╕рд╛рдЗрдб рдкрд░, рдкрд░рд┐рд╡рд░реНрддрди рдиреНрдпреВрдирддрдо рд╣реИрдВред рдЖрдкрдХреЛ LocalPlayer рдХреЗ рдореВрд▓ рд╡рд░реНрдЧ рдХрд╛ рд▓рд┐рдВрдХ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╢реАрд░реНрд╖ рд▓реЗрдЦ рдореЗрдВ рдПрдХ рдЪрд░ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛: UPROPERTY() UExedreLocalPlayer* LocalPlayer;
рддрдм BeginPlay () рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ : LocalPlayer = Cast<UExedreLocalPlayer>( GetLocalPlayer() );
рдореИрдВрдиреЗ рдХрдЯ рдХреЛ рдЬрд▓реНрдж рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдлрдВрдХреНрд╢рди рднреА рдЬреЛрдбрд╝рд╛: void AExedrePlayerController::PerformCameraCut() { if( LocalPlayer != nullptr ) { LocalPlayer->PerformCameraCut(); } }
рдЕрдВрдд рдореЗрдВ, рдкреЛрд░реНрдЯрд▓ рдкреНрд░рдмрдВрдзрдХ рдлрд╝рдВрдХреНрд╢рди RequestTeleportByPortal () рдореЗрдВ, рд╣рдо рдХреИрдорд░рд╛ рдХрдЯ рдЯреЗрд▓реАрдкреЛрд░реНрдЯреЗрд╢рди рдХреЗ рджреМрд░рд╛рди рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: void AExedrePortalManager::RequestTeleportByPortal( AExedrePortal* Portal, AActor* TargetToTeleport ) { if( Portal != nullptr && TargetToTeleport != nullptr ) { if( ControllerOwner != nullptr ) { ControllerOwner->PerformCameraCut(); } [...]
рдФрд░ рд╡рд╣ рд╕рдм рд╣реИ!рдХреИрдорд░рд╛ рдХрдЯ рдХреЛ SceneCapture рдХреЗ рдЕрдкрдбреЗрдЯ рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдпрд╣реА рд╡рдЬрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рд╣реИредрдЕрдВрддрд┐рдо рдкрд░рд┐рдгрд╛рдо
рдЕрдм рд╣рдордиреЗ рдкреЛрд░реНрдЯрд▓реНрд╕ рдореЗрдВ рд╕реЛрдЪрдирд╛ рд╕реАрдЦ рд▓рд┐рдпрд╛ рд╣реИредрдпрджрд┐ рд╕рд┐рд╕реНрдЯрдо рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рддреЛ рд╣рдореЗрдВ рдЗрди рдЪреАрдЬреЛрдВ рдХреЛ рдмрдирд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП:рдпрджрд┐ рдЖрдкрдХреЛ рд╕рдорд╕реНрдпрд╛ рд╣реЛ рд░рд╣реА рд╣реИ, рддреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЬрд╛рдВрдЪреЗрдВ:- рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдкреЛрд░реНрдЯрд▓ рдкреНрд░рдмрдВрдзрдХ рдареАрдХ рд╕реЗ рдмрдирд╛рдпрд╛ рдФрд░ рдЖрд░рдВрднрд┐рдХ рд╣реИред
- рд░реЗрдВрдбрд░ рд▓рдХреНрд╖реНрдп рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ (рдЖрдк рдЖрд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╛рдордЧреНрд░реА рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдирд┐рд░реНрдорд┐рдд рдПрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ)ред
- рдкреЛрд░реНрдЯрд▓ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╕рдХреНрд░рд┐рдп рдФрд░ рдирд┐рд╖реНрдХреНрд░рд┐рдп рд╣реИрдВред
- рдкреЛрд░реНрдЯрд▓реНрд╕ рдореЗрдВ рдПрдбрд┐рдЯрд░ рдореЗрдВ рдЯрд╛рд░реНрдЧреЗрдЯ рдПрдХреНрдЯрд░ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рд╕реЗрдЯ рд╣реИред
рдХреНрдпреВ рдПрдВрдб рдП
рдЗрд╕ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореБрдЭрд╕реЗ рдкреВрдЫреЗ рдЧрдП рд╕рдмрд╕реЗ рд▓реЛрдХрдкреНрд░рд┐рдп рд╕рд╡рд╛рд▓:рдХреНрдпрд╛ рдЗрд╕реЗ рдмреНрд▓рдВрдЯ рдкрд░ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ, рдФрд░ рд╕реА ++ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдирд╣реАрдВ?рдХреЛрдб рдХреЗ рдереЛрдХ рдХреЛ рджреЛ рдкрд╣рд▓реБрдУрдВ рдХреЗ рдЕрдкрд╡рд╛рдж рдХреЗ рд╕рд╛рде, рдмреНрд▓рдВрдЯ рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:- рдкреНрд░реЛрдЬреЗрдХреНрд╢рди рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдиреЗ рд╡рд╛рд▓рд╛ LocalPlayer GetProjectionData () рдлрд╝рдВрдХреНрд╢рди рдмреНрд▓реВрдкреНрд░рд┐рдВрдЯ рдореЗрдВ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИред
- LocalPlayer CalcSceneView () рдлрд╝рдВрдХреНрд╢рди , рдЬреЛ рдХрддрд░рди рдкреНрд░рдгрд╛рд▓реА рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ, рдмреНрд▓реВрдкреНрд░рд┐рдВрдЯ рдореЗрдВ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИред
рдЗрд╕рд▓рд┐рдП, рдЖрдкрдХреЛ рдЗрди рджреЛрдиреЛрдВ рдХрд╛рд░реНрдпреЛрдВ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╛ рддреЛ рд╕реА ++ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдпрд╛ рдмреНрд▓реВрдкреНрд░рд┐рдВрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЙрдиреНрд╣реЗрдВ рд╕реБрд▓рдн рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрдВрдЬрди рд╕реНрд░реЛрдд рдХреЛрдб рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛редрдХреНрдпрд╛ рдореИрдВ рд╡реАрдЖрд░ рдореЗрдВ рдЗрд╕ рдкреНрд░рдгрд╛рд▓реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ?рд╣рд╛рдБ, рдЕрдзрд┐рдХрд╛рдВрд╢ рднрд╛рдЧ рдХреЗ рд▓рд┐рдПред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдХреБрдЫ рд╣рд┐рд╕реНрд╕реЛрдВ рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:- рд╕реНрдХреНрд░реАрди рд╕реНрдкреЗрд╕ рдореЗрдВ рдЕрдЧрд▓-рдмрдЧрд▓ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рджреЛ рд░реЗрдВрдбрд░ рдЯрд╛рд░рдЧреЗрдЯ (рдкреНрд░рддреНрдпреЗрдХ рдЖрдВрдЦ рдХреЗ рд▓рд┐рдП рдПрдХ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдФрд░ рдкреЛрд░реНрдЯрд▓ рд╕рд╛рдордЧреНрд░реА рдореЗрдВ рдорд╛рд╕реНрдХ рд▓рдЧрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рд░реЗрдВрдбрд░ рдЯрд╛рд░рдЧреЗрдЯ рд╡реАрдЖрд░ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рдХреА рдЪреМрдбрд╝рд╛рдИ рдХреА рдЖрдзреА рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред
- рдЖрдкрдХреЛ рд╕реНрдЯреАрд░рд┐рдпреЛрд╕реНрдХреЛрдкрд┐рдХ рдкреНрд░рднрд╛рд╡ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╣реА рджреВрд░реА (рдЖрдВрдЦреЛрдВ рдХреЗ рдмреАрдЪ рдХреА рджреВрд░реА) рдХреЗ рд╕рд╛рде рд▓рдХреНрд╖реНрдп рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рджреЛ рд╕реАрдирдХреИрдкреНрдЯреНрдпреЛрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдореБрдЦреНрдп рд╕рдорд╕реНрдпрд╛ рдкреНрд░рджрд░реНрд╢рди рд╣реЛрдЧреА, рдХреНрдпреЛрдВрдХрд┐ рдкреЛрд░реНрдЯрд▓ рдХреЗ рджреВрд╕рд░реЗ рдкрдХреНрд╖ рдХреЛ рджреЛ рдмрд╛рд░ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛редрдХреНрдпрд╛ рдХреЛрдИ рдЕрдиреНрдп рд╡рд╕реНрддреБ рдкреЛрд░реНрдЯрд▓ рдХреЛ рдкрд╛рд░ рдХрд░ рд╕рдХрддреА рд╣реИ?рдореЗрд░реЗ рдХреЛрдб рдореЗрдВ рдХреЛрдИ рдирд╣реАрдВ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЗрд╕реЗ рдФрд░ рд╕рд╛рдорд╛рдиреНрдп рдмрдирд╛рдирд╛ рдЗрддрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкреЛрд░реНрдЯрд▓ рдХреЛ рдпрд╣ рдЬрд╛рдВрдЪрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд╡реЗ рдЗрд╕реЗ рдкрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ рдпрд╛ рдирд╣реАрдВредрдХреНрдпрд╛ рд╕рд┐рд╕реНрдЯрдо рд░рд┐рдХрд░реНрд╕рди (рдкреЛрд░реНрдЯрд▓ рдХреЗ рдЕрдВрджрд░ рдкреЛрд░реНрдЯрд▓) рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ?рдпрд╣ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдирд╣реАрдВ рд╣реИред рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЕрддрд┐рд░рд┐рдХреНрдд рд░реЗрдВрдбрд░ рдЯрд╛рд░рдЧреЗрдЯ рдФрд░ SceneCapture рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдирд╛ рднреА рдЖрд╡рд╢реНрдпрдХ рд╣реЛрдЧрд╛ рдХрд┐ рдХреМрди рд╕рд╛ рд░реЗрдВрдбрд░рдЯрд╛рд░реНрдЧ рдкрд╣рд▓реЗ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдирд╛ рд╣реИ, рдФрд░ рдЗрд╕реА рддрд░рд╣ред рдпрд╣ рдХрд╛рдлреА рдХрдард┐рди рд╣реИ рдФрд░ рдореИрдВ рдРрд╕рд╛ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛, рдХреНрдпреЛрдВрдХрд┐ рдореЗрд░реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИредрдХреНрдпрд╛ рдореИрдВ рджреАрд╡рд╛рд░ рдХреЗ рдкрд╛рд╕ рдкреЛрд░реНрдЯрд▓ рдкрд╛рд░ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ?рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдирд╣реАрдВред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдореИрдВ рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рджреЛ рддрд░реАрдХреЗ рджреЗрдЦрддрд╛ рд╣реВрдВ (рд╕реИрджреНрдзрд╛рдВрддрд┐рдХ рд░реВрдк рд╕реЗ):- рдЦрд┐рд▓рд╛рдбрд╝реА рдХреА рдЯрдХреНрдХрд░реЛрдВ рдХреЛ рдЕрдХреНрд╖рдо рдХрд░реЗрдВ рддрд╛рдХрд┐ рд╡рд╣ рджреАрд╡рд╛рд░реЛрдВ рд╕реЗ рдЧреБрдЬрд░ рд╕рдХреЗред рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рд╕реЗ рдХрдИ рджреБрд╖реНрдкреНрд░рднрд╛рд╡ рд╣реЛрдВрдЧреЗред
- рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдПрдХ рдЫреЗрдж рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЯрдХрд░рд╛рд╡ рдкреНрд░рдгрд╛рд▓реА рдХреЛ рд╣реИрдХ рдХрд░реЗрдВ, рдЬреЛ рдЦрд┐рд▓рд╛рдбрд╝реА рдХреЛ рдЧреБрдЬрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЗрдВрдЬрди рдХреА рднреМрддрд┐рдХ рдкреНрд░рдгрд╛рд▓реА рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЬреЛ рдореИрдВ рдЬрд╛рдирддрд╛ рд╣реВрдБ, рд╕реНрддрд░ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╕реНрдерд┐рд░ рднреМрддрд┐рдХреА рдХреЛ рдЕрджреНрдпрддрди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдХрд╛рдо рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдпрджрд┐ рдЖрдкрдХреЗ рдкреЛрд░реНрдЯрд▓реНрд╕ рд╕реНрдерд┐рд░ рд╣реИрдВ, рддреЛ рдЖрдк рд╕рдВрднрд╡рддрдГ рд╡рд┐рднрд┐рдиреНрди рдЯрдХрд░рд╛рд╡реЛрдВ рдХреЗ рдмреАрдЪ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрддрд░ рд╕реНрдЯреНрд░реАрдорд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред