MoveTo - ObjectReference/uk
Jump to navigation
Jump to search
Член ObjectReference Script (en)
Переміщує поточний об'єкт до місця розташування іншого об'єкту із зазначеним відхиленням.
Синтаксис[edit | edit source]
Function MoveTo(ObjectReference akTarget, float afXOffset = 0.0,
float afYOffset = 0.0, float afZOffset = 0.0, bool abMatchRotation = true) nativeПараметри[edit | edit source]
- akTarget: Цільовий об'єкт, до якого потрібно перемістити поточний об'єкт.
- afXOffset: Відхилення від початкових координат по вісі X.
- За замовчуванням: 0.0
- afYOffset: Відхилення від початкових координат по вісі Y.
- За замовчуванням: 0.0
- afZOffset: Відхилення від початкових координат по вісі Z.
- За замовчуванням: 0.0
- abMatchRotation: Булеве значення, яке визначає, чи повинен переміщений об'єкт успадкувати обертання від цільового об'єкту.
- За замовчуванням: True
Повернення значень[edit | edit source]
Немає.
Приклади[edit | edit source]
; Переміщує Боба до його будинку, позначеного маркером 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)Зауваження[edit | edit source]
- Слід уникати використання MoveTo() для розміщення інших акторів у полі зору гравця, оскільки вони раптово з'являтимуться перед очима гравця, що є досить нереалістично. Замість цього, розгляньте можливість розміщення їх поруч, але поза зоною видимості, потім змусьте їх наближатися до гравця самостійно, використовуючи PathToReference (en) або ForceGreet (en).
- Об'єкти групи FLOR (рослини) не можна переміщувати за допомогою MoveTo.
- Використання MoveTo() для переміщення актора до об'єкту групи FURN (меблі) призведе до того, що персонаж одразу займе положення, яке відповідає за «використання» цих меблів, без відтворення відповідних анімацій. Наприклад: PlayerRef.MoveTo(BedReference) змусить гравця лягти на ліжко (без відтворення анімації).
- MoveTo може призводити до небажаних результатів під час переміщення об'єкта до іншого актора, кути обертання X та Y якого є відносними до кута огляду цього актора, а не до їхнього обертання відносно світу. Крім того, як і SetPosition (en), MoveTo не враховує нерівний рельєф місцевості.
myObject.MoveTo(Game.GetPlayer()) ;або будь-яка інша ціль для MoveTo()
myObject.SetAngle(0.0, 0.0, 0.0)- Актор, переміщений за допомогою цієї функції, завжди має правильний поворот відносно світу.
Поширені проблеми[edit | edit source]
- Якщо актор вже знаходиться в комірці (cell) разом із гравцем, або тільки заходить чи виходить з неї, то метод MoveTo() не спрацює. Оскільки комірки можуть бути досить великими в містах та багатоповерхових будівлях, це може призвести до ситуації, коли діалог відбувається з актором, який знаходиться поза зоною видимості та/або поза межами чутності. Спробуйте послідовність DisableNoWait() (en), MoveTo(), EnableNoWait() (en), EvaluatePackage() (en). Слідкуйте, щоб послідовність відбувалася поза полем зору гравця, наприклад, під час проходження через двері (en), що ведуть у іншу локацію.
- 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.
- New workaround: The player's eyes/facial expression can be quickly and easily reset by using Actor.Say() to make the player "say" a topic that the player character has voice lines for. A good example of a topic like this is the DialogueGenericPoisonCoughBranchTopic from the DialogueGeneric quest. You can also make your own custom, silent topic so long as it has sound (can be a silent .wav file) and lip sync. Note: Actor.Say() must be called after the player is completely out of the bed and not performing any bed animations, including the "bed get up" animation or else it will not correctly reset the player's face.
- 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.)
Див. також[edit | edit source]
- ForceGreet (Procedure)
- MoveToInteractionLocation - ObjectReference
- MoveToMyEditorLocation - ObjectReference
- ObjectReference Script
- PathToReference - Actor
- SetPosition - ObjectReference
- Unit
| Україномовний матеріал Потребує перекладу всього тексту або окремих його частин. |
| Language: | English • українська |
|---|