11var scene = new THREE . Scene ( ) ;
22var camera = new THREE . PerspectiveCamera ( 75 , window . innerWidth / window . innerHeight , 0.1 , 1000 ) ;
33var keyboard = new THREEx . KeyboardState ( ) ;
4+ var clock = new THREE . Clock ( ) ;
45
56var renderer = new THREE . WebGLRenderer ( ) ;
67renderer . setSize ( window . innerWidth , window . innerHeight ) ;
@@ -50,6 +51,10 @@ var thetaX = 0;
5051var thetaY = 0 ;
5152var thetaZ = 0 ;
5253
54+ var trails = [ ] ;
55+ var last_trail_emitted_at = null ;
56+ var trail_time_interval = 0.4 ;
57+
5358function degrees_to_radians ( degrees )
5459{
5560 var pi = Math . PI ;
@@ -103,7 +108,6 @@ var animate = function () {
103108 player . position . y = initial_y ;
104109 }
105110
106-
107111 for ( var vi = 0 ; vi < player . geometry . vertices . length ; vi ++ ) {
108112 var localVertex = player . geometry . vertices [ vi ] . clone ( ) ;
109113 var globalVertex = localVertex . applyMatrix4 ( player . matrix ) ;
@@ -118,6 +122,29 @@ var animate = function () {
118122 }
119123 }
120124
125+ var delta = clock . getElapsedTime ( ) ;
126+
127+ if ( last_trail_emitted_at === null || delta > ( last_trail_emitted_at + trail_time_interval ) ) {
128+ last_trail_emitted_at = delta ;
129+
130+ var trail = new THREE . Mesh (
131+ geometry ,
132+ new THREE . MeshBasicMaterial ( { color : 0x555555 , opacity : 0.8 , transparent : true } )
133+ ) ;
134+
135+ trail . position . x = player . position . x ;
136+ trail . position . z = player . position . z ;
137+ trail . position . y = player . position . y ;
138+
139+ trails . push ( trail ) ;
140+
141+ scene . add ( trail ) ;
142+ }
143+
144+ for ( var i = 0 ; i < trails . length ; i ++ ) {
145+ trails [ i ] . position . x -= 0.05 ;
146+ }
147+
121148 renderer . render ( scene , camera ) ;
122149} ;
123150
0 commit comments