Text maxscript如何检测冲突并写入文本

Text maxscript如何检测冲突并写入文本,text,output,collision,maxscript,Text,Output,Collision,Maxscript,首先,我是Maxscript的新手。 我看过特定对象的碰撞检测脚本,我还想将对象写入txt文件,例如,所有与Cylinder001碰撞的名为“Prism*”的对象,我想将其涂成红色并写入文本文件。 我在代码方面做了一些尝试 fn collisionDetection node1 node2 = ( if intersects node1 node2 then (node1.mesh * node2.mesh).numverts > 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
我还没有添加为对象着色的代码,这是真的,因为我已经在努力处理文本文件中的输出了。有人能帮忙吗?谢谢。

您的错误已经到了 如果碰撞检测$myobject[i]$'Cylinder001'执行

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


改为传递myObject[1],这样应该可以使其正常工作

很抱歉,如果碰撞检测myObject[1]$'Cylinder001'执行此操作,则无论它们是否与圆柱体碰撞,它似乎都会将许多myObject输出到文本文件中。有没有更好的方法来写这篇文章,让它只拾取实际与圆柱体碰撞的MyObject?