0

首先,我是 Maxscript 的新手。我已经看到了特定对象的碰撞检测脚本 我还想将对象写入 txt 文件 例如,与 Cylinder001 发生碰撞的名为“Prism *”的所有对象我想将其涂成红色并写入文本文件。我在代码上做了一些尝试;

     fn collisionDetection node1 node2 =
     (
      if intersects node1 node2 then 
     (node1.mesh * node2.mesh).numverts > 0
     else
     false
     )

    dir =getFilenamePath (getThisScriptFilename())
    makeDir  dir
   OutputTextFile = dir + "Output.txt"
   if (doesFileExist OutputTextFile) do deleteFile OutputTextFile 
  filestreamvar = openFile OutputTextFile mode:"w"
     if  filestreamvar == undefined do 
    (
createFile OutputTextFile
filestreamvar = openFile OutputTextFile mode:"w"

        myObjects = $'Prim*' as array

        for i = 1 to myObjects.count do
        (
            nam = myObjects[i].name
      if collisionDetection $myobject[i] $'Cylinder001' do 
   (    
print myobjects[i] to:filestreamvar
            )
    )   
    edit OutputTextFile
   close filestreamvar

我没有添加代码来为真实的对象着色,因为我已经在文本文件中的输出中苦苦挣扎。有人可以帮忙吗?谢谢你。

4

1 回答 1

1

如果 collisionDetection $myobject[i] $'Cylinder001' 做,你的错误就在这条线上

您引用 $myobject 就好像它是场景中的一个命名项目,但它实际上是一个局部变量。这意味着您将 undefined 传递给 collisionDetection

而是通过 myObject[1] ,这应该可以正常工作

于 2014-08-20T14:48:10.290 回答