Difference between revisions of "MoveTo - ObjectReference/uk"
Jump to navigation
Jump to search
(Created page with "Category:Scripting Category:Papyrus Category:Latent Functions '''Член''' ObjectReference Script Переміщує поточний об'єкт до мі...") |
|||
Line 28: | Line 28: | ||
== Приклади == | == Приклади == | ||
<source lang="papyrus"> | <source lang="papyrus"> | ||
; Переміщує Боба до його будинку, позначеного маркером | ; Переміщує Боба до його будинку, позначеного маркером BobsHouseMarker | ||
Bob.MoveTo(BobsHouseMarker) | Bob.MoveTo(BobsHouseMarker) | ||
</source> | </source> | ||
<br/> | <br/> | ||
<source lang="papyrus"> | <source lang="papyrus"> | ||
; Переміщує Боба до його будинку, але без успадкування | ; Переміщує Боба до його будинку, але без успадкування обертань | ||
Bob.MoveTo(BobsHouseMarker, abMatchRotation = false) | Bob.MoveTo(BobsHouseMarker, abMatchRotation = false) | ||
</source> | </source> | ||
<br/> | <br/> | ||
<source lang="papyrus"> | <source lang="papyrus"> | ||
; Переміщує | ; Переміщує Portal на 120 од. перед гравцем, та на 35 од. нижче його зросту | ||
Actor PlayerRef = Game.GetPlayer() | Actor PlayerRef = Game.GetPlayer() | ||
Portal.MoveTo(PlayerRef, 120.0 * Math.Sin(PlayerRef.GetAngleZ()), 120.0 * Math.Cos(PlayerRef.GetAngleZ()), PlayerRef.GetHeight() - 35.0) | Portal.MoveTo(PlayerRef, 120.0 * Math.Sin(PlayerRef.GetAngleZ()), 120.0 * Math.Cos(PlayerRef.GetAngleZ()), PlayerRef.GetHeight() - 35.0) | ||
Line 44: | Line 44: | ||
== Зауваження == | == Зауваження == | ||
* MoveTo() | * Слід уникати використання MoveTo() для розміщення інших акторів у полі зору гравця, оскільки вони раптово з'являтимуться перед очима гравця, що є досить нереалістично. Замість цього, розгляньте можливість розміщення їх поруч, але поза зоною видимості, потім змусьте їх наближатися до гравця самостійно, використовуючи [[PathToReference - Actor/uk|PathToReference]] [[PathToReference - Actor|(en)]] або [[ForceGreet (Procedure)/uk|ForceGreet]] [[ForceGreet (Procedure)|(en)]]. | ||
* | * Об'єкти групи FLOR (рослини) не можна переміщувати за допомогою MoveTo. | ||
* | * Використання MoveTo() для переміщення актора до об'єкту групи FURN (меблі) призведе до того, що персонаж одразу займе положення, яке відповідає за «використання» цих меблів, без відтворення відповідних анімацій. Наприклад: PlayerRef.MoveTo(BedReference) змусить гравця лягти на ліжко (без відтворення анімації). | ||
* MoveTo can cause undesirable results when moving an object to another actor, whose X and Y rotation angles are relative to that actor's looking angle, not their rotation relative to the world. Furthermore, as with [[SetPosition - ObjectReference|SetPosition]], MoveTo doesn't take uneven terrain into account. | * MoveTo can cause undesirable results when moving an object to another actor, whose X and Y rotation angles are relative to that actor's looking angle, not their rotation relative to the world. Furthermore, as with [[SetPosition - ObjectReference|SetPosition]], MoveTo doesn't take uneven terrain into account. | ||
Line 58: | Line 58: | ||
* Actors moved with this function are always rotated correctly relative to the world. | * Actors moved with this function are always rotated correctly relative to the world. | ||
== | == Поширені проблеми == | ||
* | * Якщо актор вже знаходиться в комірці (cell) разом із гравцем, або тільки заходить чи виходить з неї, то метод MoveTo() не спрацює. Оскільки комірки можуть бути досить великими в містах та багатоповерхових будівлях, це може призвести до ситуації, коли діалог відбувається з актором, який знаходиться поза зоною видимості та/або поза межами чутності. Try [[DisableNoWait - ObjectReference|DisableNoWait]](), MoveTo(), [[EnableNoWait - ObjectReference|EnableNoWait]](), [[EvaluatePackage - Actor|EvaluatePackage]]() sequence. Take care that the sequence happens out-of-sight of the player, such as during passage through a loading [[Door|door]]. | ||
* As of 1.9, calling Game.GetPlayer().MoveTo(AnyBedReference) will cause the Player's eyes to become stuck shut. They can only be opened again by using the showracemenu console command, or by reloading the game. | * As of 1.9, calling Game.GetPlayer().MoveTo(AnyBedReference) will cause the Player's eyes to become stuck shut. They can only be opened again by using the showracemenu console command, or by reloading the game. |
Revision as of 09:31, 9 November 2024
Переміщує поточний об'єкт до місця розташування іншого об'єкту із зазначеним відхиленням.
Синтаксис
Function MoveTo(ObjectReference akTarget, float afXOffset = 0.0,
float afYOffset = 0.0, float afZOffset = 0.0, bool abMatchRotation = true) native
Параметри
- akTarget: Цільовий об'єкт, до якого потрібно перемістити поточний об'єкт.
- afXOffset: Відхилення від початкових координат по вісі X.
- За замовчуванням: 0.0
- afYOffset: Відхилення від початкових координат по вісі Y.
- За замовчуванням: 0.0
- afZOffset: Відхилення від початкових координат по вісі Z.
- За замовчуванням: 0.0
- abMatchRotation: Булеве значення, яке визначає, чи повинен переміщений об'єкт успадкувати обертання від цільового об'єкту.
- За замовчуванням: True
Повернення значення
Немає.
Приклади
; Переміщує Боба до його будинку, позначеного маркером BobsHouseMarker
Bob.MoveTo(BobsHouseMarker)
; Переміщує Боба до його будинку, але без успадкування обертань
Bob.MoveTo(BobsHouseMarker, abMatchRotation = false)
; Переміщує Portal на 120 од. перед гравцем, та на 35 од. нижче його зросту
Actor PlayerRef = Game.GetPlayer()
Portal.MoveTo(PlayerRef, 120.0 * Math.Sin(PlayerRef.GetAngleZ()), 120.0 * Math.Cos(PlayerRef.GetAngleZ()), PlayerRef.GetHeight() - 35.0)
Зауваження
- Слід уникати використання MoveTo() для розміщення інших акторів у полі зору гравця, оскільки вони раптово з'являтимуться перед очима гравця, що є досить нереалістично. Замість цього, розгляньте можливість розміщення їх поруч, але поза зоною видимості, потім змусьте їх наближатися до гравця самостійно, використовуючи PathToReference (en) або ForceGreet (en).
- Об'єкти групи FLOR (рослини) не можна переміщувати за допомогою MoveTo.
- Використання MoveTo() для переміщення актора до об'єкту групи FURN (меблі) призведе до того, що персонаж одразу займе положення, яке відповідає за «використання» цих меблів, без відтворення відповідних анімацій. Наприклад: PlayerRef.MoveTo(BedReference) змусить гравця лягти на ліжко (без відтворення анімації).
- MoveTo can cause undesirable results when moving an object to another actor, whose X and Y rotation angles are relative to that actor's looking angle, not their rotation relative to the world. Furthermore, as with SetPosition, MoveTo doesn't take uneven terrain into account.
- In order to "straighten" or flatten an object's rotation, set the abMatchRotation parameter to False, or call SetAngle similar to the following:
myObject.MoveTo(Game.GetPlayer()) ;Or, whatever the target of the MoveTo() is
myObject.SetAngle(0.0, 0.0, 0.0)
- Actors moved with this function are always rotated correctly relative to the world.
Поширені проблеми
- Якщо актор вже знаходиться в комірці (cell) разом із гравцем, або тільки заходить чи виходить з неї, то метод MoveTo() не спрацює. Оскільки комірки можуть бути досить великими в містах та багатоповерхових будівлях, це може призвести до ситуації, коли діалог відбувається з актором, який знаходиться поза зоною видимості та/або поза межами чутності. Try DisableNoWait(), MoveTo(), EnableNoWait(), EvaluatePackage() sequence. Take care that the sequence happens out-of-sight of the player, such as during passage through a loading door.
- As of 1.9, calling Game.GetPlayer().MoveTo(AnyBedReference) will cause the Player's eyes to become stuck shut. They can only be opened again by using the showracemenu console command, or by reloading the game.
- All movement functions can cause major issues when used on a reference that has had a motion type override applied.
- If you are moving a reference to an unloaded cell, its rotation will not be changed. This is an issue that is expected to affect all movement functions, and it was discovered via disassembly of Skyrim's 2011 release. (SKSE DLL authors will want to know that the problem occurs within the MoveRefrToPosition subroutine.)
Див. також
- ForceGreet (Procedure)
- MoveToInteractionLocation - ObjectReference
- MoveToMyEditorLocation - ObjectReference
- ObjectReference Script
- PathToReference - Actor
- SetPosition - ObjectReference
- Unit
Україномовний матеріал Потребує перекладу всього тексту або окремих його частин. |
Language: | English • українська |
---|