Sunteți pe pagina 1din 4

Operaciones bsicas con puntos y vectores

Matemticas para desarrollo de videojuegos


Curso de Programacin Unity 3D
Operaciones bsicas con puntos y vectores
Los vectores y puntos matemticos son muy necesarios en un videojuego para operaciones tan
bsicas como el movimiento de un personaje. lo largo del cdigo de un juego! los vectores se utili"an
continuamente.
#! $ector en %&sicas vs $ector en juegos
ntes de comen"ar a reali"ar operaciones con vectores! se debe entender 'ue en el conte(to
in%ormtico no se trabaja con ellos de la misma %orma 'ue se )ar&a en el conte(to cient&%ico.
*n %&sicas! un vector se representa por su ngulo y magnitud. Pero en in%ormtica! un vector se representa
por coordenadas ( e y +para vectores bidimensionales, o por coordenadas ( y " +para vectores
tridimensionales,.
-! Movimiento mediante vectores
Mediante un vector podemos mover elementos de nuestro juego +personajes! ve)&culos! objetos...,
)acia una nueva posicin. Para ello slo necesitamos la posicin actual del elemento 'ue 'ueremos mover! y
el vector con el 'ue vamos a moverlo.
*n Unity esto es muy sencillo ya 'ue ambos datos +tanto la posicin actual del objeto como el vector,
se e(presan mediante el mismo tipo. $ector3. Para colocar el objeto en una nueva posicin! se suman las
coordenadas ( y " de la posicin del objeto a las coordenadas ( y " del vector 'ue indica la direccin. l ser
el mismo tipo de dato en Unity lo podemos )acer directamente.
$ector3 posicion / ne0 $ector3 + ,1
$ector3 direccion / ne0 $ector3 + #%! 2%! 2% ,1
Posicion / trans%orm.position1 33Posicion ctual
Posicion / Posicion 4 Direccion1 335ueva posicion
trans%orm.position / Posicion1
Operaciones bsicas con puntos y vectores Matemticas para desarrollo de videojuegos Pg. #
Operaciones bsicas con puntos y vectores
Matemticas para desarrollo de videojuegos
Curso de Programacin Unity 3D
3! $ector entre posiciones
6Cmo podemos )allar el vector 'ue se encuentra entre - puntos y 78 6Cmo podemos saber a
'u9 distancia estamos de un enemigo! o de nuestro objetivo actual en el juego8 Muy sencillo.
Para obtener el vector 'ue se encuentra entre los puntos y 7 slo tendr&amos 'ue restar sus
coordenadas! es decir! ( : 7(! y : 7y! " : 7". *n Unity! podemos restar directamente ambos puntos! ya
'ue sern de tipo $ector3.
public ;ameObject objetivo1 33Objeto 7
public $ector3 posicion / ne0 $ector3 + ,1
public $ector3 posicionObjetivo / ne0 $ector3 + ,1
public $ector3 vector / ne0 $ector3+ ,1 33$ector entre posiciones
posicion / trans%orm.position1 33Posicion del objeto
posicionObjetivo / objetivo.trans%orm.position1 33Posicion del objeto 7
vector / posicionObjetivo : posicion1
*l vector resultante indica la direccin 'ue )abr&a de seguir el objeto para llegar a la posicin del
objeto 7.
Operaciones bsicas con puntos y vectores Matemticas para desarrollo de videojuegos Pg. -
Operaciones bsicas con puntos y vectores
Matemticas para desarrollo de videojuegos
Curso de Programacin Unity 3D
<! Longitud de un vector. Comparacin de longitudes
Una ve" obtenido el vector entre dos posiciones! 6Cmo sabemos la distancia a la 'ue est un punto
del otro8 Para ello se recurre a una %rmula basada en el =eorema de Pitgoras. >i por ejemplo tenemos un
vector bidimensional! podemos representarlo como un tringulo en el 'ue la longitud e'uivale a la
)ipotenusa! y las coordenadas ( e y a los catetos.
s&! )allar la longitud del vector es lo mismo 'ue )allar la )ipotenusa del tringulo.
D?>=5C?
-
/ @
-
4 A
-
A mediante la ra&" cuadrada! )ayamos la distancia e(acta 'ue representa 9se vector. >i tratamos
con un vector tridimensional! simplemente )emos de aBadir la coordenada C a la %rmula.
D?>=5C?
-
/ @
-
4 A
-
4 C
-
*n Unity es incluso ms sencillo obtener 9sta distancia. Las clases de vectores de Unity incluyen la
%uncin magnitude! 'ue devuelve automticamente la distancia 'ue representa el vector. =ambi9n se incluye
la %uncin s'rMagnitude! 'ue devuelve la distancia al cuadrado! sin resolver la ra&".
6Para 'u9 nos sirven 9stas %unciones8 Muy %cil. Cuando necesitemos la distancia e(acta! usaremos
la %uncin magnitude. Cuando simplemente 'ueramos comparar varias distancias para obtener! por ejemplo!
la mayor! usaremos la %uncin s'rMagnitude! ya 'ue es ms rpida de procesar para la m'uina.
Operaciones bsicas con puntos y vectores Matemticas para desarrollo de videojuegos Pg. 3
Operaciones bsicas con puntos y vectores
Matemticas para desarrollo de videojuegos
Curso de Programacin Unity 3D
D! $ectores unitarios +normali"ed,
veces nos interesa utili"ar vectores como re%erencia para tratar la direccin en la 'ue mira un
personaje! o la orientacin de un determinado objeto. Pero en esos casos no nos interesa tener en cuenta la
longitud del vector.
Un vector unitario es un vector cuya magnitud siempre es #. *s decir! slo almacenamos en 9l una
direccin! pero nunca tendremos en cuenta la distancia 'ue abarca.
Para obtener el vector unitario de cual'uier vector tenemos 'ue dividir todas sus coordenadas por
su magnitud +su longitud,. Unity nos proporciona sin embargo un m9todo directo para convertirlo. las
%unciones normali"e y normali"ed. $ector.normali"e+, trans%orma el vector en un vector unitario! mientras
'ue $ector.normali"ed+, devuelve el vector unitario sin alterar el vector origen.
E! >umar 3 Festar 3 Multiplicar 3 *scalar vectores
Podemos operar directamente con los vectores con los 'ue estemos trabajando para alterarlos.
dems de poder sumar o restar vectores de la misma %orma 'ue )ar&amos con los puntos! podemos
escalarlos. Gsto signi%ica 'ue podemos alterar la magnitud de un vector sin variar su direccin! por ejemplo!
para aumentar o disminuir la velocidad a la 'ue se mueve un objeto.
=ambi9n podemos multiplicar vectores entre s&. Para multiplicar dos vectores cuales'uiera!
multiplicamos sus coordenadas correspondientes +@
H
@! A
H
A! C
H
C,. *n Unity! mediante la %uncin
$ector.>cale podemos obtener directamente un vector e'uivalente a la multiplicacin de dos vectores.
$ector3 vFesultado / $ector3.>cale + vector! vector7 ,1
Para escalar un vector multiplicamos o dividimos todas sus coordenadas por el mismo nImero. Por
ejemplo! para obtener un vector cuya magnitud es el doble de su magnitud actual! multiplicar&amos sus
coordenadas ( y " por -. *n Unity podemos multiplicar directamente un dato num9rico por un tipo de vector
para JescalarK su tamaBo.
Operaciones bsicas con puntos y vectores Matemticas para desarrollo de videojuegos Pg. <

S-ar putea să vă placă și