0

家庭教師の指示に従って、「花火」(大まかに使用される用語)を生成する次のスクリプトを作成しました。これは、私が使用しなければならないスケルトン スクリプトに基づいています。

特定のパラメーターを制御するスピナーがありますが、私の人生では何が悪いのかわかりません! 私を助けてください!!!

タスクは、スクリプトを介してアニメーション化することでした。球体が上昇し、面が「爆発」し、タイム スケールによって方向が下向きに変化しました。

(花火が上がり、爆発し、破片が地面に落ちる)

私が書いたことは正しいと思いますが、実際にはアニメーションは生成されません。私の最善の努力と何ヶ月ものハードワークにもかかわらず。

私はコーディングが初めてで、コーディングにサインアップしていません。私がやりたかったのは、モデル化の方法を学ぶことだけでした。しかし、私の家庭教師は私のパスの鍵を握っています。

現時点で、私は「激怒をやめる」準備ができており、単に自分の鉱山から出て行こうとしています. どんな助けでも大歓迎です。

これが私がこれまでに書いたスクリプトです...

-- Empty varables to be called in or adjusted by spinners

numOfSpheres = 0 --number of exploding spheres
sphereRadius = 0
creationBoxSize = 0 -- spawn radius in what box size?
objs = #() -- objs created go to empty array! 
maxHeight = 0
startTime = 0



dropping = false --boolean flag to trigger the falling sphere stage

animate on
(
    for i = 1 to numOfSpheres by 1 do
    (
        at time (startTime + 50.000) ( meshop.bevelFaces objs[i]  #{1..objs[i].numFaces} 0.0000001 0 )
        at time (startTime + 50.001) ( meshop.bevelFaces objs[i]  #{1..objs[i].numFaces} 0.0000001 0 )
        at time (startTime + 100)    ( meshop.bevelFaces objs[i]  #{1..objs[i].numFaces} 100 0 )

        at time (startTime) ( objs[i].pos = objs[i].pos )

        local height = maxHeight

        for t = 5 to 100 by 5 do
        (
            height = height - 2
            at time (startTime + t) ( objs[i].pos = objs[i].pos + [ 0, 0, height] )
        )
    )
)

rollout FireWorks "FireWorks" 
( -- button ui code starts here
    label lbl1 "By Luke Fahy" style_sunkenedge:true width:67 height:17
    spinner count "FireWorks: " type:#integer range:[1,100,10]  -- 1 to a 100: default value of 10: integer = whole number not fraction!
    spinner size "Size: " type:#float range:[0.1,30,1] 
    spinner sPlane "Spawn Plane: " type:#integer range:[1,200,30]
    spinner maxHeightSpinner "Max Height: " type:#float range:[1,100,14]
    spinner startTimeSpinner "Start Time: " type:#float range:[1,100,1]
    button create "Create Fireworks"

    on create pressed do -- Event handler code start
    (
        numOfSpheres = count.value
        sphereRadius = size.value 
        creationBoxSize = sPlane.value 
        maxHeight = maxHeightSpinner.value 
        startTime = startTimeSpinner.value

        dropping = false

        --create spheres
        for i = 1 to numOfSpheres by 1 do
        (
            objs[i] = sphere radius:sphereRadius
            local r = random 0 255
            local g = random 0 255
            local b = random 0 255
            objs[i] .wirecolor = (color r g b)
            objs[i] .pos = [random creationBoxSize -creationBoxSize, random creationBoxSize -creationBoxSize, 0]   -- random possative and negative x/y values to create spawn box. 

            convertToMesh objs[i]
            meshOp.explodeAllFaces objs[i] 0
        )
    )
) -- button ui code end 

createDialog FireWorks width:200

また、私のコメントとインデントに対する提案をいただければ幸いです。(切り取りや過去の際に書式設定が窓の外に投げ出されたようです。申し訳ありませんが、私はこのフォーラムに不慣れです。ファイルは添付ファイルです)

よろしく、シャインスミス:)

追加情報:

さらに、これが私の家庭教師が私の作業の基礎としてくれたスクリプトです。

(ここで必要なオブジェクト配列、または特異なオブジェクトの名前。他の人は、単一の球体の $name とそのインスタンスを使用して、複数の「花火」を複製しました)

convertToMesh $

meshop.explodeAllFaces $ 0

update $

v = 20

animate on
(
    at time (sliderTime+50.000) ( meshop.bevelFaces $ #{1..$.numFaces} 0.0000001 0 )
    at time (sliderTime+50.001) ( meshop.bevelFaces $ #{1..$.numFaces} 0.0000001 0 )
    at time (sliderTime+100)    ( meshop.bevelFaces $ #{1..$.numFaces} 100 0 )

    at time (sliderTime) ( $.pos = $.pos )
    for t = 5 to 100 by 5 do
    (
        v = v - 2
        at time (sliderTime+t) ( $.pos = $.pos + [0,0,v] )
    )
)
4

2 に答える 2

0

球体が作成される前、さらに球体が作成される前に、アニメーション コードを実行していますRolloutanimate on (...)ブロックをハンドラー内に移動on createするか、別の関数にします。

于 2012-09-16T09:25:44.670 に答える