Difference between revisions of "MoveTo - ObjectReference/uk"

From the CreationKit Wiki
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">
; Переміщує портал на 120 одиниць перед гравцем, та на 35 одиниць нижче його зросту
; Переміщує 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() should be avoided for placing other actors in sight of the player, as they will suddenly appear in an unrealistic way. Instead, consider placing them nearby but out of sight, and making them approach the player themselves, using [[PathToReference - Actor|PathToReference]] or [[ForceGreet (Procedure)|ForceGreet]].
* Слід уникати використання MoveTo() для розміщення інших акторів у полі зору гравця, оскільки вони раптово з'являтимуться перед очима гравця, що є досить нереалістично. Замість цього, розгляньте можливість розміщення їх поруч, але поза зоною видимості, потім змусьте їх наближатися до гравця самостійно, використовуючи [[PathToReference - Actor/uk|PathToReference]] [[PathToReference - Actor|(en)]] або [[ForceGreet (Procedure)/uk|ForceGreet]] [[ForceGreet (Procedure)|(en)]].


* Flora objects cannot be moved using MoveTo.
* Об'єкти групи FLOR (рослини) не можна переміщувати за допомогою MoveTo.


* Making an actor MoveTo() a furniture reference will make the actor immediately assume the position of "using" that furniture, without playing the furniture entrance animation. Example: PlayerRef.MoveTo(BedReference) will make the player lie down on the bed reference (without playing the bed entrance animation).
* Використання 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.


== Баги ==
== Поширені проблеми ==
* If an actor is already in the cell, and the player is also in the cell, leaving the cell, or arriving in the cell, MoveTo() does not function. As cells can be quite large in cities and multi-level buildings, ensuing dialogue can occur with the actor out-of-sight and/or out-of-hearing. 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]].
* Якщо актор вже знаходиться в комірці (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

Член ObjectReference Script

Переміщує поточний об'єкт до місця розташування іншого об'єкту із зазначеним відхиленням.

Синтаксис

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.
  • 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.)

Див. також


RoundUkrainianFlag.pngУкраїномовний матеріал
Потребує перекладу всього тексту або окремих його частин.


Language: English  • українська