如何在一个对象上设置onCollisionEnter?

我正在使用Atom get脚本我的TTS mod。在我的游戏中,我有一个带有GUIDed743f的袋子,我有一个调用我的#include Shard/shard文件的全局文件。在那个文件中,我有一个#include diceroller在我的diceRoller.ttslua文件中,我有这段代码:

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

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

打印出来是正确的,所以文件被正确地包含了,但是如何将onCollisionEnter函数与正确的对象(diceRoller)“连接”起来呢?因为现在当我把一个骰子放进袋子里什么也不会发生。

点赞
用户2858170
用户2858170

从官方文档中发现:

onCollisionEnter(...)

当一个物体开始与此函数所在的物体发生碰撞时,此函数将被调用。在全局中不起作用。

此函数所在对象指的是,在对象脚本中实现了该函数的对象。

对象成员:

script_code 物体上的 Lua 脚本。

对象脚本(Object Script) 赋予一个游戏中的物体的脚本,将该脚本保存在该物体中以作为其属性之一。这类似于其它属性,如缩放或色度。某些函数需要一个物体引用以便尝试在其上运行该函数。在这些情况下,全局(Global)(完全按照此处的语法)也是一个有效的物体引用。

从我在这里阅读到的,我想说您需要在对象脚本中实现该函数。

请再次仔细阅读手册。

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

2020-04-07 12:08:10
用户848706
用户848706

@Piglet 是正确的,他说onCollisionEnter(...)在Global中无法使用。我的做法是右键点击Tabletop Simulator中的物体(袋子)并选择“Scripting editor”。这会打开此物体对应的脚本文件。接着在该文件中,我使用了一个require引用:require("somefolder/somefile")。路径的根目录为:

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

这样一来,我可以使用onCollisionEnter(...),因为该脚本不是Global脚本,而是绑定到物体上的脚本。

2020-04-08 10:18:17