如何在对象上设置 onCollisionEnter?

How to set onCollisionEnter on a object?

我正在使用 Atom 获取脚本我的 TTS mod。在我的游戏中,我有一个带有 GUID ed743f 的包,我有一个调用我的 #include Shard/shard 文件的全局文件。在那个文件中,我的 diceRoller.ttslua 文件中有 #include diceroller 我有这个代码:

diceRoller = getObjectFromGUID("ed743f")
  print(diceRoller, 'roller')

function onCollisionEnter()
  print('dice entered')
end

打印有效,因此文件被正确包含,但是 "connect" onCollisionEnter 函数如何使用正确的对象 (diceRoller)?因为现在当我把骰子放进袋子里时什么也没有发生。

来自文档:

onCollisionEnter(...)

This function is called when an Object starts colliding with the Object the function is on. Does not work in Global.

功能开启意味着它在该对象的对象脚本中实现。

对象成员:

script_code The Lua Script on the Object.

Object Script A script that is attached to an in-game Object, and is saved as part of it. This is similar to any other property like its scale or tint. Some functions ask for an Object reference in order to attempt to run a function on it. In these cases, Global (exactly as written here) is also a valid Object reference.

根据我在此处阅读的内容,我认为您需要在对象脚本中实现该功能。

请再次阅读手册。

https://api.tabletopsimulator.com/event/

@Piglet 说 onCollisionEnter(...) 在全局中不起作用是正确的。我所做的是在桌面模拟器中右键单击对象(袋子)并点击 "Scripting editor"。这将打开该对象的脚本文件。然后在那个文件中我做了一个 require reference require("somefolder/somefile")。路径的根是:

C:\Users*****\Documents\Tabletop Simulator

所以现在我可以使用 onCollisionEnter(...) 因为脚本不是全局的而是对象绑定的。