-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathNivelMar.js
136 lines (107 loc) · 4.12 KB
/
NivelMar.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
import * as THREE from './libs/three.module.js'
import { Camino } from './Camino.js'
import { Alga } from './Alga.js'
import { Walrus } from './Walrus.js'
import { Bomba } from './Bomba.js'
class NivelMar extends THREE.Object3D{
constructor(anchura, altura){
super();
// Se crea un plano para el suelo
// altura/5,0.2,anchura/5
//tal y como tenemos el juego, no queremos altura
// y la altura será nuestra profundidad
var geometryGround = new THREE.BoxGeometry (anchura/26,0.2,altura/26);
// El material se hará con una textura de arena o tierra
var texture = new THREE.TextureLoader().load('./imgs/water_2.png');
var materialGround = new THREE.MeshPhongMaterial ({map: texture});
// Ya se puede construir el Mesh
var ground = new THREE.Mesh (geometryGround, materialGround);
// Todas las figuras se crean centradas en el origen.
ground.position.y = -0.08;
//posiciones del suelo para que quede en su lugar correspondiente
ground.position.x = -56
ground.position.z = 43
this.add(ground)
this.camino1 = new Camino();
this.camino1.rotateY(-Math.PI/2)
this.camino1.position.z = 22.5
this.camino1.position.x = -67
this.add(this.camino1)
this.camino2 = new Camino();
this.camino2.rotateY(-Math.PI/2)
this.camino2.position.z = 22.5
this.camino2.position.x = -61
this.add(this.camino2)
this.alga1 = new Alga()
this.add(this.alga1)
this.alga1.position.z = 28
this.alga1.position.x = -42
this.alga2 = new Alga()
this.add(this.alga2)
this.alga2.position.z = 50
this.alga2.position.x = -80
this.walrus = new Walrus()
this.add(this.walrus)
this.walrus.position.x = -70
this.walrus.position.z = 50
this.fin_recorrido_x = false
this.fin_recorrido_z = true
//walrus se desplaza saltando de su posicion en x
//hasta -42
this.walrus_signo_recorrido = +1
this.array_obstaculos = new Array ();
this.array_obstaculos = [this.camino1, this.camino2, this.alga1, this.alga2]
this.array_enemigos = new Array
this.array_enemigos = [this.walrus]
}
devolverEnemigos(){
return this.array_enemigos
}
devolverObstaculos(){
return this.array_obstaculos
}
rutaWalrus(){
if(!this.fin_recorrido_x){
if(this.walrus.position.x == -42){
this.walrus_signo_recorrido = -1
this.fin_recorrido_x = true
this.fin_recorrido_z = false
this.walrus.rotateY(Math.PI/2)
}
if(this.walrus.position.x == -71){
this.walrus_signo_recorrido = 1
this.walrus.rotateY(Math.PI)
}
this.walrus.position.x = (this.walrus.position.x) + (1 * this.walrus_signo_recorrido)
}
if(this.fin_recorrido_x && !this.fin_recorrido_z){
if(this.walrus.position.z == 40){
this.fin_recorrido_z = true
this.walrus.rotateY(Math.PI)
}
this.walrus.position.z -= 0.5
}
if(this.fin_recorrido_z && this.fin_recorrido_x){
if(this.walrus.position.z == 50){
this.fin_recorrido_x = false
this.walrus.rotateY(-Math.PI/2)
}
this.walrus.position.z += 0.5
}
}
soltarBomba() {
this.bomba = new Bomba()
this.bomba.position.x = this.walrus.position.x
this.bomba.position.y = this.walrus.position.y + 0.5
this.bomba.position.z = this.walrus.position.z
this.add(this.bomba)
this.bomba.cube.position.x = this.bomba.position.x
this.bomba.cube.position.z = this.bomba.position.z
this.add(this.bomba.cube)
this.array_obstaculos = [this.camino1, this.camino2, this.alga1, this.alga2, this.bomba, this.bomba.cube]
}
update(){
this.rutaWalrus()
}
}
export { NivelMar };