Spikey Rain
Spikey Rain
Project Setup
Project Setup
In[]:=
Needs["UnityLink`"]
In[]:=
UnityOpen["SpikeyRain2"]
In[]:=
CreateUnityAssetDirectory[{"Scenes","Meshes","Materials"}];
In[]:=
CreateUnityScene[File["Scenes/Spikey Rain"]]
Out[]=
UnityScene
In[]:=
mesh=CreateUnityMesh[File["Meshes/Spikey"],PolyhedronData["Spikey","BoundaryMeshRegion"]]
Out[]=
UnityMesh
Scene Setup
Scene Setup
In[]:=
CreateUnityPlane["Platform",Properties->{"LocalScale"->{8,1,3},"EulerAngles"->{-25,0,0}}]
Out[]=
UnityGameObject
In[]:=
spikeyCount=10
Out[]=
10
In[]:=
positions=Table[{RandomReal[{-8,8}],20+i*10,10},{i,spikeyCount}]
Out[]=
{{2.70584,30,10},{1.11317,40,10},{-6.29331,50,10},{-1.57901,60,10},{3.22349,70,10},{0.783133,80,10},{-0.295151,90,10},{2.64514,100,10},{7.86213,110,10},{-6.38607,120,10}}
In[]:=
colors=RandomColor[Hue[_],spikeyCount]
Out[]=
,,,,,,,,,
In[]:=
materials=Table[CreateUnityMaterial[File["Materials/Spikey "<>ToString[i]],colors[[i]]],{i,spikeyCount}]
Out[]=
UnityMaterial,UnityMaterial,UnityMaterial,UnityMaterial,UnityMaterial,UnityMaterial,UnityMaterial,UnityMaterial,UnityMaterial,UnityMaterial
In[]:=
gameObjects=Table[CreateUnityGameObject["Spikey ("<>ToString[i]<>")",mesh],{i,spikeyCount}]
Out[]=
UnityGameObject,UnityGameObject,UnityGameObject,UnityGameObject,UnityGameObject,UnityGameObject,UnityGameObject,UnityGameObject,UnityGameObject,UnityGameObject
In[]:=
Do[SetProperty[gameObjects[[i]],"Position"->positions[[i]]],{i,spikeyCount}]
In[]:=
Do[SetProperty[gameObjects[[i]],"SharedMaterial"->materials[[i]]],{i,spikeyCount}]
In[]:=
Do[SetProperty[gameObjects[[i]],"LocalScale"->{0.5,0.5,0.5}],{i,spikeyCount}]
In[]:=
Table[CreateUnityRigidbody[go,Properties->{"CollisionDetection"->"Continuous","Drag"->0.25}],{go,gameObjects}]
Out[]=
UnityRigidbody,UnityRigidbody,UnityRigidbody,UnityRigidbody,UnityRigidbody,UnityRigidbody,UnityRigidbody,UnityRigidbody,UnityRigidbody,UnityRigidbody
In[]:=
colliders=FindUnityComponent["Spikey (*)","MeshCollider",All];Do[SetProperty[collider,"Convex"->True],{collider,colliders}]
In[]:=
DeleteUnityGameObject["Directional Light"]
In[]:=
Table[CreateUnityLight[gameObjects[[i]],Properties->{"Type"->"Point","Color"->colors[[i]],"Intensity"->3,"Range"->5,"RenderMode"->"ForcePixel"}],{i,spikeyCount}]
Out[]=
UnityLight,UnityLight,UnityLight,UnityLight,UnityLight,UnityLight,UnityLight,UnityLight,UnityLight,UnityLight
In[]:=
SaveUnityScene[]
Out[]=
True