Como permanecer mirando?
2 participantes
SchultzGames :: UNITY 3D :: Resolvidos
Página 1 de 1
Como permanecer mirando?
Quando pressiono o botão direito do mouse aparece uma "mira" mais avançada como se fosse em uma arma porem quando paro de pressionar ele volta ao normal. Queria saber como faço para quando eu apertar o de mira ele continue mirando até eu apertar novamente, como se ele entrasse em um mode de mira.
using UnityEngine;
using System.Collections;
// AimBehaviour inherits from GenericBehaviour. This class corresponds to aim and strafe behaviour.
public class AimBehaviour : GenericBehaviour
{
public Texture2D crosshair; // Crosshair texture.
public float aimTurnSmoothing = 15.0f; // Speed of turn response when aiming to match camera facing.
public Vector3 aimPivotOffset = new Vector3(0.0f, 1.7f, -0.3f); // Offset to repoint the camera when aiming.
public Vector3 aimCamOffset = new Vector3(0.8f, 0.0f, -1.0f); // Offset to relocate the camera when aiming.
private int aimBool; // Animator variable related to aiming.
public bool aim; // Boolean to determine whether or not the player is aiming.
// Start is always called after any Awake functions.
void Start ()
{
// Set up the references.
aimBool = Animator.StringToHash("Aim");
// Subscribe this behaviour on the manager.
behaviourManager.SubscribeBehaviour (this);
}
// Update is used to set features regardless the active behaviour.
void Update ()
{
// Activate aim by input.
aim = Input.GetButton("Aim");
// Player is aiming.
if (aim)
{
// Register this behaviour.
behaviourManager.RegisterBehaviour (this.behaviourCode);
}
// Player just stopped aiming.
else if(behaviourManager.IsCurrentBehaviour(this.behaviourCode))
{
// Ensure the camera will be back to original setup when is not aiming.
camScript.ResetTargetOffsets ();
camScript.ResetMaxVerticalAngle ();
// Unregister this behaviour and set current behaviour to the default one.
behaviourManager.UnregisterBehaviour (this.behaviourCode);
}
canSprint = !aim;
// Toggle camera aim position left or right.
if (aim && Input.GetKeyDown("q"))
{
aimCamOffset.x = aimCamOffset.x * (-1);
}
// Set aim boolean on the Animator Controller.
anim.SetBool (aimBool, aim);
}
// LocalFixedUpdate overrides the virtual function of the base class.
public override void LocalFixedUpdate()
{
// Set camera position and orientation to the aim mode parameters.
camScript.SetTargetOffsets (aimPivotOffset, aimCamOffset);
// Call the aim manager.
AimManagement ();
}
// Deal with the player movement when aiming.
void AimManagement()
{
Rotating();
}
// Rotate the player to match correct orientation, according to camera.
void Rotating()
{
Vector3 forward = behaviourManager.playerCamera.TransformDirection(Vector3.forward);
// Player is moving on ground, Y component of camera facing is not relevant.
forward.y = 0.0f;
forward = forward.normalized;
// Always rotates the player according to the camera forward in aim mode.
Quaternion targetRotation = Quaternion.LookRotation (forward);
Quaternion newRotation = Quaternion.Slerp(rbody.rotation, targetRotation, aimTurnSmoothing * Time.deltaTime);
rbody.MoveRotation (newRotation);
behaviourManager.SetLastDirection(forward);
}
// Draw the crosshair when on aim mode.
void OnGUI ()
{
float mag = camScript.getCurrentPivotMagnitude (aimPivotOffset);
if (mag < 0.05f)
GUI.DrawTexture(new Rect(Screen.width/2-(crosshair.width*0.5f),
Screen.height/2-(crosshair.height*0.5f),
crosshair.width, crosshair.height), crosshair);
}
}
using UnityEngine;
using System.Collections;
// AimBehaviour inherits from GenericBehaviour. This class corresponds to aim and strafe behaviour.
public class AimBehaviour : GenericBehaviour
{
public Texture2D crosshair; // Crosshair texture.
public float aimTurnSmoothing = 15.0f; // Speed of turn response when aiming to match camera facing.
public Vector3 aimPivotOffset = new Vector3(0.0f, 1.7f, -0.3f); // Offset to repoint the camera when aiming.
public Vector3 aimCamOffset = new Vector3(0.8f, 0.0f, -1.0f); // Offset to relocate the camera when aiming.
private int aimBool; // Animator variable related to aiming.
public bool aim; // Boolean to determine whether or not the player is aiming.
// Start is always called after any Awake functions.
void Start ()
{
// Set up the references.
aimBool = Animator.StringToHash("Aim");
// Subscribe this behaviour on the manager.
behaviourManager.SubscribeBehaviour (this);
}
// Update is used to set features regardless the active behaviour.
void Update ()
{
// Activate aim by input.
aim = Input.GetButton("Aim");
// Player is aiming.
if (aim)
{
// Register this behaviour.
behaviourManager.RegisterBehaviour (this.behaviourCode);
}
// Player just stopped aiming.
else if(behaviourManager.IsCurrentBehaviour(this.behaviourCode))
{
// Ensure the camera will be back to original setup when is not aiming.
camScript.ResetTargetOffsets ();
camScript.ResetMaxVerticalAngle ();
// Unregister this behaviour and set current behaviour to the default one.
behaviourManager.UnregisterBehaviour (this.behaviourCode);
}
canSprint = !aim;
// Toggle camera aim position left or right.
if (aim && Input.GetKeyDown("q"))
{
aimCamOffset.x = aimCamOffset.x * (-1);
}
// Set aim boolean on the Animator Controller.
anim.SetBool (aimBool, aim);
}
// LocalFixedUpdate overrides the virtual function of the base class.
public override void LocalFixedUpdate()
{
// Set camera position and orientation to the aim mode parameters.
camScript.SetTargetOffsets (aimPivotOffset, aimCamOffset);
// Call the aim manager.
AimManagement ();
}
// Deal with the player movement when aiming.
void AimManagement()
{
Rotating();
}
// Rotate the player to match correct orientation, according to camera.
void Rotating()
{
Vector3 forward = behaviourManager.playerCamera.TransformDirection(Vector3.forward);
// Player is moving on ground, Y component of camera facing is not relevant.
forward.y = 0.0f;
forward = forward.normalized;
// Always rotates the player according to the camera forward in aim mode.
Quaternion targetRotation = Quaternion.LookRotation (forward);
Quaternion newRotation = Quaternion.Slerp(rbody.rotation, targetRotation, aimTurnSmoothing * Time.deltaTime);
rbody.MoveRotation (newRotation);
behaviourManager.SetLastDirection(forward);
}
// Draw the crosshair when on aim mode.
void OnGUI ()
{
float mag = camScript.getCurrentPivotMagnitude (aimPivotOffset);
if (mag < 0.05f)
GUI.DrawTexture(new Rect(Screen.width/2-(crosshair.width*0.5f),
Screen.height/2-(crosshair.height*0.5f),
crosshair.width, crosshair.height), crosshair);
}
}
victorgx22- Membro
- PONTOS : 3008
REPUTAÇÃO : 1
Respeito as regras :
Re: Como permanecer mirando?
"Queria saber como faço para quando eu apertar o de mira ele continue mirando até eu apertar novamente, como se ele entrasse em um mode de mira?"
eu mandei a duvida!!
eu mandei a duvida!!
victorgx22- Membro
- PONTOS : 3008
REPUTAÇÃO : 1
Respeito as regras :
Re: Como permanecer mirando?
Consegui resolver. criei uma variavel boleana para o estado de " mirando" e só quando ela desatiasse iria sair desse estado.
victorgx22- Membro
- PONTOS : 3008
REPUTAÇÃO : 1
Respeito as regras :
Tópicos semelhantes
» Como Abrir Porta do Carro (Capo,PortaMalas, Portas) Mirando Nelas
» Como que faço para rotacionar um objeto na posição do player como o cenario
» Gostaria de saber se já tem como colocar esse carro como mod no Spintires Mudrunners
» [RESOLVIDO] Como criar varias contas em um jogo como PlayerPrefs.
» [TUTORIAL]Como Chamar Um Método Usando Uma String como Parametro
» Como que faço para rotacionar um objeto na posição do player como o cenario
» Gostaria de saber se já tem como colocar esse carro como mod no Spintires Mudrunners
» [RESOLVIDO] Como criar varias contas em um jogo como PlayerPrefs.
» [TUTORIAL]Como Chamar Um Método Usando Uma String como Parametro
SchultzGames :: UNITY 3D :: Resolvidos
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos