スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

OBSEv0020実験コーナー

現在β版が配布されているOBSEv0020にて新規追加される関数を実験してみよう!というコーナーです。
 


●DeleteReference関数
(wasRefDeleted:bool) reference.DeleteReference
●概要
対象の動的リファレンスをデータ的に削除する(セーブデータのゴミにならずに消える)
●補足
これまでは動的に生成したリファレンス(火を付けたまま落とせる松明など)はそのまま削除することができないので、「適当なアクターにアクティベートさせて所持品として回収した後にRemoveItem関数でデータとして削除する」という非常に面倒くさい方法が主流になっていました。
しかしDeleteReference関数を使うと一発でデータ削除が可能!…なはず?
以下のような必須条件があるっぽい。
・Disable状態にしておくこと
・アクターはダメ
・インベントリの中にあったらダメ(多分)
・動的に生成されたリファレンスであること(FormIDの頭がFF)
●実験結果
<OBSEv0020 beta 3において>
どうやってもDeleteReferenceの戻り値が0になり失敗してしまう(´Д`;
http://cs.elderscrolls.com/constwiki/index.php/DeleteReferenceのExampleコピペでも失敗になるのですが、どうすれば成功するかご存じの方は教えてください(´・ω・`)
<OBSEv0020 beta 4において>
正常に動作するようになりました!(゚∀゚)



●PlayIdle関数
(idlePlayed:bool) ref.PlayIdle idleAnim:ref forceIdle:bool
●概要
アクターに対して無条件で指定アイドルモーションを再生させる
●補足
通常、特定のアイドルモーションを再生させるには条件(何らかのアイテムを所定の個数だけ持たせるなど)を満たした状態にしてからPickIdleする必要がありますが、このPlayIdle関数を使うと無条件で特定のアイドルモーションを再生させることが可能です。
●実験内容
PlayIdleでモーションを再生させている最中にPickIdleが行われたらどうなるのか?
●実験結果
PickIdleを行うとPlayIdleで再生中だったモーションは終了し、PickIdleによって選ばれたモーションの再生へと切り替わってしまいました(´Д`;
従って「絶対にこのモーションの再生をプレイヤーに見せたいんだ!」という用途には向かないと思います。
PlayIdleはPickIdleに上書きされ、PickIdleもまたPlayIdleに上書きされるという結果でした。



●SetVerticalVelocity関数
(nothing) reference.SetVerticalVelocity velocity:float
●概要
アクターの上昇下降移動量を強制設定できる
●実験内容
毎フレーム Player.SetVerticalVelocity 0.0 を行い続けることにより、プレイヤーが特定の高さを保ったまま半永久的に空中に居続けられるのでは?
●実験結果
残念ながらスクリプト外のオブリエンジンの処理?らしきものが影響しているようで、どんなに頑張って毎フレーム0.0を設定し続けても、ちょっとずつ落下していってしまいました(つД`;
ただし特定のZ座標(高さ)を基準として記録しておき今現在のZ座標との差をSetVerticalVelocityの引数に渡し続ければ、誤差を修正し続ける状態となって特定Z座標の高さをキープしたまま空中停止できました。
スポンサーサイト

コメント

非公開コメント

プロフィール

r_basilico

バジリコ風味 (r_basilico)
Twitter: r_basilico
Steam: r_basilico
艦これ: 嫁艦は祥鳳

リンク
最新記事
最新コメント
月別アーカイブ
カテゴリ
検索フォーム
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。