Você está na página 1de 18

Metodologa de Ingeniera de

Software

Requerimientos

DESPLAZAMIENTO DE UN OBJETO EN
TERCERA PERSONA

Fecha 26/11/2017
Versin 5.0
UNIVERSIDAD NACIONAL JOS
FAUSTINO SANCHEZ CARRIN

FACULTAD DE INGENIERA
ESCUELA DE INGENIERA DE SISTEMAS ESCUELA DE INGENIERA INFORMTICA

1. Informacin general del requerimiento

Cdigo REQ<Nmero> Siglas <alias>

Requerimiento Desplazamiento de un objeto

Organizacin destino Docente

Equipo Requerimiento -Quiche Trujillo, Lizandro


-Huerta Cardenas, Alexander
-Kam Goe, Chion
-Farjardo Snchez, Angel
-Muoz Rojas, Dennilson

Fecha de Inicio 25/10/17 Fecha de Trmino 28/10/17

2. Historial de revisiones

Fecha Versin Descripcin Autor

27/09/17 1.0 Versin inicial del requerimiento ALEXANDER

27/09/17 1.1 Objetivo, desplazar el personaje hacia adelante con las teclas 30/09/17

27/09/17 1.2 El personaje emite sonidos con los pasos dados 30/09/17

27/09/17 1.3 Iniciar el desplazamiento adelante hasta llegue a la puerta. 30/09/17

27/09/17 1.4 Llegando a la puerta presionar la tecla F para abrir 30/09/17

27/09/17 1.5 El personaje es desplazado al escenario de la casa 30/09/17

27/09/17 1.6 En el punto final dentro del escenario hay una interaccin con la 30/09/17
pared y se emite un cambio de escenario.

Ing. Alex Luis Daz Vsquez


Versin: 5.5 - 05/01/2012 Pg. 2 de 18
UNIVERSIDAD NACIONAL JOS
FAUSTINO SANCHEZ CARRIN

FACULTAD DE INGENIERA
ESCUELA DE INGENIERA DE SISTEMAS ESCUELA DE INGENIERA INFORMTICA

Tabla de Contenidos

1. Informacin general del requerimiento 2

2. Historial de revisiones 2

3. Introduccin 4
3.1. Propsito 4
3.2. Alcance 4
3.3. Abreviaturas 4

4. Objetivos del Sistema 4


4.1. Objetivo Principal 4
4.2. Objetivo Secundario 4

5. Procedimiento 5
5.1. Nombre de procedimiento 1 5
5.1.1. Ejemplo del procedimiento 1 Error! Bookmark not defined.
5.1.2. Datos generales 5
5.1.3. Clculo y uso de frmulas 5
5.1.4. Representacin grfica 5

6. Anexos 14
6.1. Anexo I: Glosario de trminos 14
6.2. Anexo II: Frmulas 15
6.3. Anexo III: Tablas 16

7. Firma de Aprobacin 18

Ing. Alex Luis Daz Vsquez


Versin: 5.5 - 05/01/2012 Pg. 3 de 18
UNIVERSIDAD NACIONAL JOS
FAUSTINO SANCHEZ CARRIN

FACULTAD DE INGENIERA
ESCUELA DE INGENIERA DE SISTEMAS ESCUELA DE INGENIERA INFORMTICA

3. Introduccin
3.1. Propsito
Desde el punto de vista del usuario del juego
Disear un programa que nos permita ver el desplazamiento lineal de un
objeto

Desde un punto de vista del alumno (TI)


Deducir el requerimiento e implementar una solucin de software siguiendo
una metodologa.

3.2. Alcance

3.3. Abreviaturas

RN: Regla de negocio nueva.


RE: Regla de negocio existente.
OB: Observaciones generales.
Termino n: Descripcin del trmino n.

4. Objetivos del Sistema

4.1. Objetivo Principal

Desplazamiento del objeto con presin a las teclas, emitir sonido de los pasos y cambiar de escenario.

4.2. Objetivo Secundario

Mover el objeto hacia a la izquierda o derecha dejando al objeto en posicin de retorno.


Desplazamiento del tope hacia el origen dejando huella

Ing. Alex Luis Daz Vsquez


Versin: 5.5 - 05/01/2012 Pg. 4 de 18
UNIVERSIDAD NACIONAL JOS
FAUSTINO SANCHEZ CARRIN

FACULTAD DE INGENIERA
ESCUELA DE INGENIERA DE SISTEMAS ESCUELA DE INGENIERA INFORMTICA

5. Procedimiento
Iniciar el desplazamiento hacia adelante hasta llegar al punto de encuentro
Proceso de presin de teclas para emitir movimiento al personaje
Emite un sonido en el proceso de los pasos del movimiento del personaje
En el movimiento se interacta con la puerta presionando la tecla F
Una vez dentro de la casa se interacta con la pared
Se procesa el tope con la pared y se cambia de escenario.

5.1. Nombre de procedimiento 1

1)CAMINAR AL PRESIONAR UNA TECLA DIAGRAMA DE MOVIMIENTOS, CODIGOS


2)ABRIR LA PUERTA
3)TOPE EN LA PARED, CODIGOS
4)CAMBIO DE ESCENARIO AL TOPAR LA PARED, CODIGOS
5)CONFIGURACIN DE PERSONAJE
5.1.1. Datos generales
5.1.2. Clculo y uso de frmulas
Cdigos
Comandos

5.1.3. Representacin grfica

Ing. Alex Luis Daz Vsquez


Versin: 5.5 - 05/01/2012 Pg. 5 de 18
UNIVERSIDAD NACIONAL JOS
FAUSTINO SANCHEZ CARRIN

FACULTAD DE INGENIERA
ESCUELA DE INGENIERA DE SISTEMAS ESCUELA DE INGENIERA INFORMTICA

1) MOVIMIENTO AL PRESIONAR UNA TECLA

DIAGRAMA DE MOVIMIENTO CON CODIGOS.

using UnityEngine;

namespace UnityStandardAssets.Characters.ThirdPerson
{
[RequireComponent(typeof(Rigidbody))]
[RequireComponent(typeof(CapsuleCollider))]
[RequireComponent(typeof(Animator))]
public class ThirdPersonCharacter : MonoBehaviour
{
[SerializeField] float m_MovingTurnSpeed = 360;
[SerializeField] float m_StationaryTurnSpeed = 180;
[SerializeField] float m_JumpPower = 12f;
[Range(1f, 4f)][SerializeField] float m_GravityMultiplier = 2f;
[SerializeField] float m_RunCycleLegOffset = 0.2f; //specific to the
character in sample assets, will need to be modified to work with others
[SerializeField] float m_MoveSpeedMultiplier = 1f;
[SerializeField] float m_AnimSpeedMultiplier = 1f;
[SerializeField] float m_GroundCheckDistance = 0.1f;

Rigidbody m_Rigidbody;
Animator m_Animator;
bool m_IsGrounded;
float m_OrigGroundCheckDistance;
const float k_Half = 0.5f;
float m_TurnAmount;
float m_ForwardAmount;
Vector3 m_GroundNormal;
float m_CapsuleHeight;
Ing. Alex Luis Daz Vsquez
Versin: 5.5 - 05/01/2012 Pg. 6 de 18
UNIVERSIDAD NACIONAL JOS
FAUSTINO SANCHEZ CARRIN

FACULTAD DE INGENIERA
ESCUELA DE INGENIERA DE SISTEMAS ESCUELA DE INGENIERA INFORMTICA

Vector3 m_CapsuleCenter;
CapsuleCollider m_Capsule;
bool m_Crouching;

void Start()
{
m_Animator = GetComponent<Animator>();
m_Rigidbody = GetComponent<Rigidbody>();
m_Capsule = GetComponent<CapsuleCollider>();
m_CapsuleHeight = m_Capsule.height;
m_CapsuleCenter = m_Capsule.center;

m_Rigidbody.constraints = RigidbodyConstraints.FreezeRotationX
| RigidbodyConstraints.FreezeRotationY | RigidbodyConstraints.FreezeRotationZ;
m_OrigGroundCheckDistance = m_GroundCheckDistance;
}

public void Move(Vector3 move, bool crouch, bool jump)


{

if (move.magnitude > 1f) move.Normalize();


move = transform.InverseTransformDirection(move);
CheckGroundStatus();
move = Vector3.ProjectOnPlane(move, m_GroundNormal);
m_TurnAmount = Mathf.Atan2(move.x, move.z);
m_ForwardAmount = move.z;

ApplyExtraTurnRotation();

if (m_IsGrounded)
{
HandleGroundedMovement(crouch, jump);
}
else
{
HandleAirborneMovement();
}

ScaleCapsuleForCrouching(crouch);
PreventStandingInLowHeadroom();

UpdateAnimator(move);
}

void ScaleCapsuleForCrouching(bool crouch)


{
if (m_IsGrounded && crouch)
{
if (m_Crouching) return;
m_Capsule.height = m_Capsule.height / 2f;
m_Capsule.center = m_Capsule.center / 2f;
Ing. Alex Luis Daz Vsquez
Versin: 5.5 - 05/01/2012 Pg. 7 de 18
UNIVERSIDAD NACIONAL JOS
FAUSTINO SANCHEZ CARRIN

FACULTAD DE INGENIERA
ESCUELA DE INGENIERA DE SISTEMAS ESCUELA DE INGENIERA INFORMTICA

m_Crouching = true;
}
else
{
Ray crouchRay = new Ray(m_Rigidbody.position +
Vector3.up * m_Capsule.radius * k_Half, Vector3.up);
float crouchRayLength = m_CapsuleHeight -
m_Capsule.radius * k_Half;
if (Physics.SphereCast(crouchRay, m_Capsule.radius *
k_Half, crouchRayLength, Physics.AllLayers, QueryTriggerInteraction.Ignore))
{
m_Crouching = true;
return;
}
m_Capsule.height = m_CapsuleHeight;
m_Capsule.center = m_CapsuleCenter;
m_Crouching = false;
}
}

void PreventStandingInLowHeadroom()
{

if (!m_Crouching)
{
Ray crouchRay = new Ray(m_Rigidbody.position +
Vector3.up * m_Capsule.radius * k_Half, Vector3.up);
float crouchRayLength = m_CapsuleHeight -
m_Capsule.radius * k_Half;
if (Physics.SphereCast(crouchRay, m_Capsule.radius *
k_Half, crouchRayLength, Physics.AllLayers, QueryTriggerInteraction.Ignore))
{
m_Crouching = true;
}
}
}

void UpdateAnimator(Vector3 move)


{

m_Animator.SetFloat("Forward", m_ForwardAmount, 0.1f,


Time.deltaTime);
m_Animator.SetFloat("Turn", m_TurnAmount, 0.1f,
Time.deltaTime);
m_Animator.SetBool("Crouch", m_Crouching);
m_Animator.SetBool("OnGround", m_IsGrounded);
if (!m_IsGrounded)
{
m_Animator.SetFloat("Jump", m_Rigidbody.velocity.y);
}

float runCycle =
Mathf.Repeat(

m_Animator.GetCurrentAnimatorStateInfo(0).normalizedTime +
Ing. Alex Luis Daz Vsquez
Versin: 5.5 - 05/01/2012 Pg. 8 de 18
UNIVERSIDAD NACIONAL JOS
FAUSTINO SANCHEZ CARRIN

FACULTAD DE INGENIERA
ESCUELA DE INGENIERA DE SISTEMAS ESCUELA DE INGENIERA INFORMTICA

m_RunCycleLegOffset, 1);
float jumpLeg = (runCycle < k_Half ? 1 : -1) * m_ForwardAmount;
if (m_IsGrounded)
{
m_Animator.SetFloat("JumpLeg", jumpLeg);
}

if (m_IsGrounded && move.magnitude > 0)


{
m_Animator.speed = m_AnimSpeedMultiplier;
}
else
{

m_Animator.speed = 1;
}
}

void HandleAirborneMovement()
{

Vector3 extraGravityForce = (Physics.gravity *


m_GravityMultiplier) - Physics.gravity;
m_Rigidbody.AddForce(extraGravityForce);

m_GroundCheckDistance = m_Rigidbody.velocity.y < 0 ?


m_OrigGroundCheckDistance : 0.01f;
}

void HandleGroundedMovement(bool crouch, bool jump)


{

if (jump && !crouch &&


m_Animator.GetCurrentAnimatorStateInfo(0).IsName("Grounded"))
{

m_Rigidbody.velocity = new
Vector3(m_Rigidbody.velocity.x, m_JumpPower, m_Rigidbody.velocity.z);
m_IsGrounded = false;
m_Animator.applyRootMotion = false;
m_GroundCheckDistance = 0.1f;
}
}

void ApplyExtraTurnRotation()
{

float turnSpeed = Mathf.Lerp(m_StationaryTurnSpeed,


m_MovingTurnSpeed, m_ForwardAmount);
transform.Rotate(0, m_TurnAmount * turnSpeed * Time.deltaTime,
0);
}

Ing. Alex Luis Daz Vsquez


Versin: 5.5 - 05/01/2012 Pg. 9 de 18
UNIVERSIDAD NACIONAL JOS
FAUSTINO SANCHEZ CARRIN

FACULTAD DE INGENIERA
ESCUELA DE INGENIERA DE SISTEMAS ESCUELA DE INGENIERA INFORMTICA

public void OnAnimatorMove()


{

if (m_IsGrounded && Time.deltaTime > 0)


{
Vector3 v = (m_Animator.deltaPosition *
m_MoveSpeedMultiplier) / Time.deltaTime;

v.y = m_Rigidbody.velocity.y;
m_Rigidbody.velocity = v;
}
}

void CheckGroundStatus()
{
RaycastHit hitInfo;
#if UNITY_EDITOR

Debug.DrawLine(transform.position + (Vector3.up * 0.1f),


transform.position + (Vector3.up * 0.1f) + (Vector3.down * m_GroundCheckDistance));
#endif

if (Physics.Raycast(transform.position + (Vector3.up * 0.1f),


Vector3.down, out hitInfo, m_GroundCheckDistance))
{
m_GroundNormal = hitInfo.normal;
m_IsGrounded = true;
m_Animator.applyRootMotion = true;
}
else
{
m_IsGrounded = false;
m_GroundNormal = Vector3.up;
m_Animator.applyRootMotion = false;
}
}
}
}

Ing. Alex Luis Daz Vsquez


Versin: 5.5 - 05/01/2012 Pg. 10 de 18
UNIVERSIDAD NACIONAL JOS
FAUSTINO SANCHEZ CARRIN

FACULTAD DE INGENIERA
ESCUELA DE INGENIERA DE SISTEMAS ESCUELA DE INGENIERA INFORMTICA

2) ABRIR LA PUERTA (tecla F)

var smooth = 2.0;

var DoorOpenAngle = 90.0;


private var open : boolean;
private var enter : boolean;

private var defaultRot : Vector3;


private var openRot : Vector3;

function Start(){
defaultRot = transform.eulerAngles;
openRot = new Vector3 (defaultRot.x, defaultRot.y + DoorOpenAngle, defaultRot.z);
}

function Update (){


if(open){

transform.eulerAngles = Vector3.Slerp(transform.eulerAngles, openRot, Time.deltaTime


* smooth);
}else{

transform.eulerAngles = Vector3.Slerp(transform.eulerAngles, defaultRot,


Time.deltaTime * smooth);
}

if(Input.GetKeyDown("f") && enter){


open = !open;
}
}

Ing. Alex Luis Daz Vsquez


Versin: 5.5 - 05/01/2012 Pg. 11 de 18
UNIVERSIDAD NACIONAL JOS
FAUSTINO SANCHEZ CARRIN

FACULTAD DE INGENIERA
ESCUELA DE INGENIERA DE SISTEMAS ESCUELA DE INGENIERA INFORMTICA

function OnGUI(){
if(enter){
GUI.Label(new Rect(Screen.width/2 - 75, Screen.height - 100, 150, 30), "PRECIONE'F'
PARA HABIR LA PUERTA");
}
}

function OnTriggerEnter (other : Collider){


if (other.gameObject.tag == "Player") {
enter = true;
}
}
function OnTriggerExit (other : Collider){
if (other.gameObject.tag == "Player")

{enter = false;
}
}

3) TOPE EN LA PARED

El capsulle colider es una opcin que permite que no se pueda traspasar los objetos ni
se caiga del terreno

Ing. Alex Luis Daz Vsquez


Versin: 5.5 - 05/01/2012 Pg. 12 de 18
UNIVERSIDAD NACIONAL JOS
FAUSTINO SANCHEZ CARRIN

FACULTAD DE INGENIERA
ESCUELA DE INGENIERA DE SISTEMAS ESCUELA DE INGENIERA INFORMTICA

4) CAMBIO DE ESENARIO AL CHOCAR CON LA PARED

using UnityEngine;
using System.Collections;
using UnityEngine.SceneManagement;
public class CambiarEscena : MonoBehaviour
{

void OnTriggerEnter(Collider other)


{
if (other.tag == "Player")
{
SceneManager.LoadScene("Juego2");
}
}
}

5) CONDICION DEL PERSONAJE

Ing. Alex Luis Daz Vsquez


Versin: 5.5 - 05/01/2012 Pg. 13 de 18
UNIVERSIDAD NACIONAL JOS
FAUSTINO SANCHEZ CARRIN

FACULTAD DE INGENIERA
ESCUELA DE INGENIERA DE SISTEMAS ESCUELA DE INGENIERA INFORMTICA

Configuracin del personaje

-Estructura de huesos

-Animacin

-Configuracin de movimiento

-Efecto de fsica (Ejemplo: Gravedad, Peso, Velocidad, Maza)

6. Anexos

6.1. Anexo I: Glosario de trminos

Terminologa utilizada en el requerimiento que se requiere precisar o ampliar. Se muestra los


siguientes ejemplos.

Ing. Alex Luis Daz Vsquez


Versin: 5.5 - 05/01/2012 Pg. 14 de 18
UNIVERSIDAD NACIONAL JOS
FAUSTINO SANCHEZ CARRIN

FACULTAD DE INGENIERA
ESCUELA DE INGENIERA DE SISTEMAS ESCUELA DE INGENIERA INFORMTICA

a) Fecha de facturacin (FF).- Fecha en la cual se realiza la proyeccin de intereses de la Pre cuota.

b) Fecha de corte (FC).- Segmento de tiempo en la cual se consideran todos los desembolsos que se
han realizado y sern facturados.

c) Fecha Emisin (FE).- Fecha de facturacin o facturacin ms prxima correspondiente al ltimo


desembolso o por el periodo de facturacin.

d) Fecha vencimiento (FV).- Segmento de tiempo como plazo para ser notificado al deudor para su
cobranza respectiva.

e) Fecha Activacin (FA).- Fecha de facturacin o fecha de facturacin ms prxima.

f) Fecha Primer Vencimiento (F1V).- Segmento de tiempo desde la fecha de facturacin se adiciona un
mes conservando el da de facturacin.

6.2. Anexo II: Frmulas

Frmulas utilizadas en el requerimiento que se requiere precisar o ampliar. Se muestra los


siguientes ejemplos.

1. Frmula para determinar la Fecha de Corte

= 15

2. Frmula para determinar la Base de Clculo

[RN] La Base de Clculo debe incluir el Impuesto General a las Ventas en su aplicacin.

3. Frmula para determinar los das Pre cuota

[RN] Aplica para desembolsos parciales normales o nicos desembolsos. En caso de ltimos
desembolsos que se encuentre en el intervalo de fecha de corte y fecha de facturacin.

= ( + 1)

[RN] Aplica slo para periodos de corte consecutivos en la cual no existen desembolsos.

[RN] Aplica para ltimos desembolsos que se encuentre en el intervalo de fecha de facturacin y
fecha de corte.

Ing. Alex Luis Daz Vsquez


Versin: 5.5 - 05/01/2012 Pg. 15 de 18
UNIVERSIDAD NACIONAL JOS
FAUSTINO SANCHEZ CARRIN

FACULTAD DE INGENIERA
ESCUELA DE INGENIERA DE SISTEMAS ESCUELA DE INGENIERA INFORMTICA

4. Frmula para el clculo de Inters Pre cuota


= ((1 + ) 360 ) 1)

[RN] Tasa corresponde a la tasa efectiva anual.


[RN] Base de clculo corresponde al importe financiado, importe del bien, importe desembolsado
o capital de inversin.

5. Frmula para el clculo del vencimiento del comprobante de pago


= (
+ 30 )

[RN] Aplica para ltimos desembolsos que la fecha desembolsos no caiga en una fecha de
facturacin cronograma.

= ( + 30 )

[RN] Aplica para nicos desembolsos que la fecha desembolsos cae en una fecha de facturacin
cronograma.

6.3. Anexo III: Tablas

Tablas informativas del requerimiento que se requiere precisar o ampliar. Se muestra los
siguientes ejemplos.
g) Tipos de da de facturacin:
Da de facturacin Pre Cuota

N Pre Cuota

1 2

2 10

3 15

4 25

Da de facturacin Cronograma
Ing. Alex Luis Daz Vsquez
Versin: 5.5 - 05/01/2012 Pg. 16 de 18
UNIVERSIDAD NACIONAL JOS
FAUSTINO SANCHEZ CARRIN

FACULTAD DE INGENIERA
ESCUELA DE INGENIERA DE SISTEMAS ESCUELA DE INGENIERA INFORMTICA

N Cronograma

1 2

2 10

3 15

4 20

5 21

6 23

7 25

Ing. Alex Luis Daz Vsquez


Versin: 5.5 - 05/01/2012 Pg. 17 de 18
UNIVERSIDAD NACIONAL JOS
FAUSTINO SANCHEZ CARRIN

FACULTAD DE INGENIERA
ESCUELA DE INGENIERA DE SISTEMAS ESCUELA DE INGENIERA INFORMTICA

7. Firma de Aprobacin

Para dar la conformidad al presente documento, se requiere las firmas de las personas
involucradas en el requerimiento; indicadas a continuacin:

Divisin Nombre Rol Firma

Finanzas, Contabilidad
y Administracin

Operaciones

Banca Mayorista

domingo, 26 de Noviembre de 2017

Ing. Alex Luis Daz Vsquez


Versin: 5.5 - 05/01/2012 Pg. 18 de 18

Você também pode gostar