[Duvida] Problema em relação ao transform.rotate
2 participantes
Página 1 de 1
[Duvida] Problema em relação ao transform.rotate
galera fiz esse script aqui:
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PT : MonoBehaviour {
public Transform SB,cam01;
void Update () {
if (Input.GetKey (KeyCode.E)) {
StartCoroutine ("Recuo");
}
}
IEnumerator Recuo(){
yield return new WaitForSeconds (0.3f);
cam01.Rotate (1, 0, 0);
}
}
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
[RequireComponent(typeof(CharacterController))]
public class MPL01 : MonoBehaviour {
public float speed = 6.0f, normalSpeed, VeloxSpeed;
GameObject cameraFPS;
Vector3 moveDirection = Vector3.zero;
CharacterController controller;
float rotacaoX = 0.0f, rotacaoY = 0.0f;
public bool TravarCursor = true;
void Awake(){
normalSpeed = speed;
}
void Start () {
transform.tag = "Player";
cameraFPS = GetComponentInChildren (typeof(Camera)).transform.gameObject;
cameraFPS.transform.localPosition = new Vector3 (0, 1, 0);
cameraFPS.transform.localRotation = Quaternion.identity;
controller = GetComponent<CharacterController> ();
}
void Update () {
if (TravarCursor == true) {
Cursor.lockState = CursorLockMode.Locked;
Cursor.visible = false;
}
if (Input.GetKey (KeyCode.LeftShift) || Input.GetKey (KeyCode.RightShift)) {
speed = VeloxSpeed;
} else {
speed = normalSpeed;
}
Vector3 direcaoFrente = new Vector3 (cameraFPS.transform.forward.x, 0, cameraFPS.transform.forward.z);
Vector3 direcaoLado = new Vector3 (cameraFPS.transform.right.x, 0, cameraFPS.transform.right.z);
direcaoFrente.Normalize ();
direcaoLado.Normalize ();
direcaoFrente = direcaoFrente * Input.GetAxis ("Vertical");
direcaoLado = direcaoLado * Input.GetAxis ("Horizontal");
Vector3 direcFinal = direcaoFrente + direcaoLado;
if (direcFinal.sqrMagnitude > 1) {
direcFinal.Normalize ();
}
if (controller.isGrounded) {
moveDirection = new Vector3 (direcFinal.x, 0, direcFinal.z);
moveDirection *= speed;
if (Input.GetButton ("Jump")) {
moveDirection.y = 8.0f;
}
}
moveDirection.y -= 20.0f * Time.deltaTime;
controller.Move (moveDirection * Time.deltaTime);
CameraPrimeiraPessoa ();
}
void CameraPrimeiraPessoa(){
rotacaoX += Input.GetAxis ("Mouse X") * 10.0f;
rotacaoY += Input.GetAxis ("Mouse Y") * 10.0f;
rotacaoX = ClampAngleFPS (rotacaoX, -360, 360);
rotacaoY = ClampAngleFPS (rotacaoY, -80, 80);
Quaternion xQuaternion = Quaternion.AngleAxis (rotacaoX, Vector3.up);
Quaternion yQuaternion = Quaternion.AngleAxis (rotacaoY, -Vector3.right);
Quaternion rotacFinal = Quaternion.identity * xQuaternion * yQuaternion;
cameraFPS.transform.localRotation = Quaternion.Lerp (cameraFPS.transform.localRotation, rotacFinal, Time.deltaTime * 10.0f);
}
float ClampAngleFPS(float angulo, float min, float max){
if (angulo < -360) {
angulo += 360;
}
if (angulo > 360) {
angulo -= 360;
}
return Mathf.Clamp (angulo, min, max);
}
}
Re: [Duvida] Problema em relação ao transform.rotate
você está fazendo o Rotate errado... ele é chamado apenas em um único frame depois do yield de 0.3 segundos, então não da nem pra perceber o Rotate acontecendo.
Faz uma variável ficar verdadeira depois desse 0.3 seg, e no Update você pede, se a variável é verdadeira, ai você coloca o Rotate dentro.
Faz uma variável ficar verdadeira depois desse 0.3 seg, e no Update você pede, se a variável é verdadeira, ai você coloca o Rotate dentro.
Tópicos semelhantes
» [Duvida] Rotate e RigidBody e Carro Andando de Lado.
» Dúvida em relação a contagem de dinheiro
» problema com o transform.position
» Dúvida em relação a Unity + MySql + PHP
» Dúvida em relação ao multiplayer
» Dúvida em relação a contagem de dinheiro
» problema com o transform.position
» Dúvida em relação a Unity + MySql + PHP
» Dúvida em relação ao multiplayer
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos