Jump to content

Search the Community

Showing results for tags 'ayuda scripting'.



More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • General
    • Proyectos
    • Offtopic
    • Unity Feeds
    • Website
    • Youtube
  • Mesa de ayuda
    • Unity
    • Arte
    • Builds & Dispositivos
    • Otras Especialidades
  • Aportes de la Comunidad
    • Recursos
    • Eventos
  • Bolsa de trabajo & Colaboraciones
    • Ofertas y Demandas
  • Post Antiguos
    • General (Antiguo)

Blogs

There are no results to display.

There are no results to display.


Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


Especialidad

Found 6 results

  1. Estoy haciendo un juego de naves y un jefe tiene un ataque que lanza al jugador o su ala izquierda o su ala derecha. El caso es que en la ala derecha todo bien pero en la izquierda no se mueve, he puesto unos Debug.Log y se muestran correctamente pero la ala sigue sin moverse using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.PlayerLoop; public class Boss2ArmAttackBehaviour : StateMachineBehaviour { // public bool isAtackingWithRightArm = false; Vector3 rightArmPos; Vector3 leftArmPos; public Transform leftArm; public Transform rightArm; public Transform rightArmB; public PlayerBehaviour player; public BossBehaviour2 boss; int rand; public float timer; public float minTime; public float maxTime; public float armSpeed; public Vector3 direction; public Animator animatorr; Transform rArm; Transform lArm; public Vector3 direction2; public float timeToRecalculate; // OnStateEnter is called when a transition starts and the state machine starts to evaluate this state override public void OnStateEnter(Animator animator, AnimatorStateInfo stateInfo, int layerIndex) { animatorr = animator; timer = Random.Range(minTime, maxTime); animator.SetFloat("timelife", timer); //boss = GameObject.Find("Bossu2RealVariant(Clone)").GetComponent<BossBehaviour2>(); boss = GameObject.Find("Bossu2RealVariant").GetComponent<BossBehaviour2>(); player = GameObject.Find("nave").GetComponent<PlayerBehaviour>(); rArm = GameObject.Find("spaceParts_020").GetComponent<Transform>(); rightArm = GameObject.Find("RightArm").GetComponent<Transform>(); rightArmPos = rightArm.localPosition; lArm = GameObject.Find("spaceParts_019").GetComponent<Transform>(); leftArm = GameObject.Find("LeftArm").GetComponent<Transform>(); leftArmPos = leftArm.localPosition; // animator.SetBool("isAttackingWithArms", true); float lifetime = 0.3f; //TODO metodo para los dos brazos if (animator.GetBool("rightArm") == true) { StartRightArm(); Debug.Log("r arm started"); } if (animator.GetBool("leftArm") == true) { StartLeftArm(); Debug.Log("l arm started"); } } // OnStateUpdate is called on each Update frame between OnStateEnter and OnStateExit callbacks override public void OnStateUpdate(Animator animator, AnimatorStateInfo stateInfo, int layerIndex) { CheckArm(); } public void StartRightArm() { rightArm.localPosition = new Vector3(-1.655198f, -1.130143f, 0); Debug.Log(animatorr.GetParameter(0)); //isAtackingWithRightArm = true; Debug.Log("posicion r" + rightArm.transform.position); Debug.Log("Espero que te llegue r"); // animator.SetFloat("timelife", lifetime); rightArm.transform.position = rightArm.transform.position + direction * armSpeed; timeToRecalculate = Random.Range(2, 4); direction = player.transform.position - rightArm.transform.position; direction.Normalize(); } public void StartLeftArm() { leftArm.localPosition = new Vector3(1.655198f, -1.130143f, 0); Debug.Log(animatorr.GetParameter(0)); //isAtackingWithRightArm = true; Debug.Log("posicion l" + leftArm.transform.position); Debug.Log("Espero que te llegue l"); // animatorr.SetFloat("timelife", lifetime); leftArm.transform.position = leftArm.transform.position + direction * armSpeed; timeToRecalculate = Random.Range(2, 4); direction = player.transform.position - leftArm.transform.position; direction.Normalize(); } public void CheckArm() { // Debug.Log("timer" + timer + "tietorec" +timeToRecalculate); if (!PauseMenuBehaviour.isPaused && player.life >= 0) { if (timeToRecalculate <= 0) { if (animatorr.GetBool("rightArm")) { direction2 = player.transform.position - rightArm.transform.position; direction2.Normalize(); direction = direction2; rightArm.transform.position = rightArm.transform.position + direction * armSpeed; timeToRecalculate = Random.Range(2, 4); Debug.Log("Direccion recalculada r"); } else if (animatorr.GetBool("leftArm")) { direction2 = player.transform.position - leftArm.transform.position; direction2.Normalize(); direction = direction2; leftArm.transform.position = leftArm.transform.position + direction * armSpeed; timeToRecalculate = Random.Range(2, 4); Debug.Log("Direccion recalculada l"); } } if (timer <= 0) { if (animatorr.GetBool("rightArm")) { Debug.Log("He esperado el timer r"); // Destroy(rightArm.gameObject, lifetime); // isAtackingWithRightArm = false; rightArm.transform.rotation.Set(0, 0, 0, 0); rightArm.localPosition = new Vector3(-1.655198f, -1.130143f, 0); Debug.Log("Brazo r en su sitio"); animatorr.SetBool("rightArm", false); animatorr.ResetTrigger("isAttackingWithRightArm"); if (animatorr.GetBool("phase2Trrigered") == false) { animatorr.SetTrigger("idle"); // animatorr.SetTrigger("phase2"); // animatorr.SetBool("phase2Trrigered", true); } else { animatorr.SetTrigger("phase2Idle"); } // rightArm.localPosition = new Vector3(-1.655198f, -1.130143f, 0); } else if (animatorr.GetBool("leftArm")) { Debug.Log("He esperado el timer l"); // Destroy(rightArm.gameObject, lifetime); // isAtackingWithRightArm = false; // leftArm.transform.rotation.Set(0, 0, 0, 0); leftArm.transform.rotation = new Quaternion(0, 0, 0, 0); leftArm.localPosition = new Vector3(1.655198f, -1.130143f, 0); Debug.Log("Brazo l en su sitio"); animatorr.SetBool("leftArm", false); animatorr.ResetTrigger("isAttackingWithRightArm"); if (animatorr.GetBool("phase2Trrigered") == false) { animatorr.SetTrigger("idle"); // animatorr.SetTrigger("phase2"); // animatorr.SetBool("phase2Trrigered", true); } else { animatorr.SetTrigger("phase2Idle"); } // rightArm.localPosition = new Vector3(-1.655198f, -1.130143f, 0); } }else { if (animatorr.GetBool("rightArm")) { //TODO //rArm.transform.Rotate(Vector3.back * armSpeed * Time.deltaTime); // rArm.transform.rotation = new Quaternion(rArm.transform.rotation.x,rArm.transform.rotation.y,rArm.transform.rotation.z + 1,100); //rightArm.transform.Translate(Vector3.down * armSpeed * Time.deltaTime); timer -= Time.deltaTime; timeToRecalculate -= Time.deltaTime; Debug.Log("Brazo en movimiento r"); // direction = player.transform.position - rightArm.transform.position; direction.Normalize(); rightArm.transform.position = rightArm.transform.position + direction * armSpeed; Debug.Log(""); } else if (animatorr.GetBool("leftArm")) { //TODO //lArm.transform.Rotate(Vector3.back * armSpeed * Time.deltaTime); // rArm.transform.rotation = new Quaternion(rArm.transform.rotation.x,rArm.transform.rotation.y,rArm.transform.rotation.z + 1,100); //rightArm.transform.Translate(Vector3.down * armSpeed * Time.deltaTime); timer -= Time.deltaTime; timeToRecalculate -= Time.deltaTime; Debug.Log("Brazo en movimiento l"); Debug.Log(leftArm.name + " " + direction + "" + armSpeed); // direction = player.transform.position - rightArm.transform.position; direction.Normalize(); // leftArm.Translate(leftArm.transform.position + direction * armSpeed); leftArm.gameObject.transform.position = leftArm.transform.position + direction * armSpeed; } } } } }
  2. Buenos dias a todos . Necesito conseguir las coordenadas de el puntero de el raton respecto a un game object, me explico: Digamos que la coordenada 0,0 (2d) de unity esta en el centro de la pantalla, cuando creemos un game object y lo ponemos en la escena, las coordenadas de este serán contadas a partir de la coordenada 0,0 que mencione antes, ahora bien, lo que yo necesito no es saber las coordenadas de ese game object respecto a el centro de la pantalla, sino que quiero obtener la coordenada 0,0 a partir de otro objeto. No se si me explico.... (si no se me entiende me lo comentáis y con mucho gusto lo intento explicar con mas claridad ) pondré un ejemplo, tengo en escena un objeto a el que llamare player, y necesito saber, cuales son las coordenadas de el puntero de el ratón, tomando como coordenada 0,0 el objeto player. Cualquier ayuda o consejo me es útil y gracias de antemano
  3. Buenas tardes, llevo dos dias rompiendome la cabeza de este problema, veran; Tengo un enemigo que me persigue a distgancia x me ataca a distancia x...eso va perfecto, a la hora de activar un simple canvas que es una imagen de sangre en la pantalla solo lo activa el primer enemigo los demas pasan de activar nada. Creo que el problema puede ser en el transform(ahora lo vereis en el script), lo mismo me pasa al activar audios etc solo uno lo hace los demas aunque aga prefab no funciona. using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.AI; public class enemigoataca2 : MonoBehaviour { public Transform player; public float velocidadenemigo; public float distance; public AudioSource pega; public AudioSource camina; public AudioSource espadahit; void Start() { player = GameObject.FindGameObjectWithTag("player").transform; pega.enabled = false; camina.enabled = false; espadahit.enabled = false; } void Update() { distance = Vector3.Distance(transform.position, player.position); if (distance <= 30) { camina.enabled = true; pega.enabled = false; GetComponent<Animation>().CrossFade("Walk"); GetComponent<walkmesh2>().enabled = false; GetComponent<UnityEngine.AI.NavMeshAgent>().SetDestination(player.transform.position); } if (distance <= 3)///AQUI DEBERIA ACTIVAR EL CANVAS SANGRE/AUDIO LO QUE SEA { GetComponent<Animation>().CrossFade("2H_skeleton_specal_attack_A"); ManagerScript.manager.Vida -= 5f * Time.deltaTime; ManagerScript.manager.activasangre = true; pega.enabled = true; // player.GetComponent<Animation>().Play("Cover_sword_hit"); espadahit.enabled = true; } else { espadahit.enabled = false; // player.GetComponent<Animation>().CrossFade("Run"); ManagerScript.manager.activasangre = false; } if (distance >= 25) { camina.enabled = false; GetComponent<walkmesh2>().enabled = true; } } } Donde le digo que si la distancia es-= 3 es donde deberia activarlo. y creo que el problema viene de : player = GameObject.FindGameObjectWithTag("player").transform; que solo calcula la distancia de el player en un solo enemigo. Agradeceria una idea gracias!!!
  4. Buenas tardes , tengo un simple script que al entrar en un trigger empiexa a sonar una musica y quiero que al salir se detenga bajando el volumen. No me da error , y suena al entrar...pero no disminuye al salir como yo esperaba. El debug lo marca bien , osea que detecta al jugador al salir. Alguna idea por favor? using System.Collections; using System.Collections.Generic; using UnityEngine; public class activaenemigos : MonoBehaviour { private GameObject player; public GameObject enemigos; private GameObject cameramain; private GameObject cameraenemiga; float audioVolume; AudioSource audio; void Start () { enemigos.SetActive (false); player = GameObject.FindWithTag ("Player"); audio = GetComponent<AudioSource>(); } void OnTriggerEnter (Collider col) { if (col.tag == "Player") { enemigos.SetActive (true); audio.Play (); } } void OnTriggerExit (Collider col) { Debug.Log ("salida"); if (audio.volume > 0.09) { audio.volume -= 0.1f * Time.deltaTime; } Invoke ("desactivalos",5); } void Update() { if (player.GetComponent<vidajugador> ().curHealth < ) { if (audio.volume > 0.09) { audio.volume -= 0.1f * Time.deltaTime; } Invoke ("desactivalos",16); } } void desactivalos() { enemigos.SetActive (false); if (audio.volume > 0.09) { audio.volume -= 0.1f * Time.deltaTime; } } } Gracias
  5. Buenas tardes, tengo un pequeño y espero decir pequeño porque seria una faena...problemilla. Tengo un proyecto de juego que solo tiene una escena. Bien si la palmas te sale el típico botón reiniciar. bien el juego empieza de nuevo pero....algunos scripts o componentes no reaccionan / funcionan adecuadamente como si se cargaran mal.Estoy usando el ultimo Unity y creo que he probado todas las maneras de reiniciar el nivel: using UnityEngine; using System.Collections; using UnityEngine.SceneManagement; public class gameover : MonoBehaviour { public void reiniciar() { //SceneManager.LoadScene("mesapinball"); ////ESTA NO VA BIEN // Application.LoadLevel (Application.loadedLevelName);//ESTA TAMPOCO.... SceneManager.LoadScene(SceneManager.GetActiveScene().name);///TAMPOCO Time.timeScale = 1.0F; } public void salir() { Application.Quit(); } } todas lo reinician pero omitiendo trozos....debería meter un dontdestroy a todo lo que no funciona? Sabéis de otra manera para que se cargue todo? EDITO; el que no se carga de nuevo al hacer el restart es peculiarmente este: using UnityEngine; using System.Collections; using System.Collections.Generic; public class droptargetss : MonoBehaviour { public float dropDistance = 1.0f; public int bankID = ; public float resetDelay = 0.5f; public static List<droptargetss> dropTargets = new List<droptargetss>(); public int targetValue = 100; public int bankValue = 10000; AudioSource audio; public AudioClip sonidotarget; public AudioClip cantina; public bool isDropped = false; public GameObject luzx1; public GameObject luzx2; public GameObject TextOnSpotGO; //public GameObject cantinavideo; // void Awake() { // DontDestroyOnLoad(transform.gameObject); // } // Use this for initialization void Awake () { dropTargets.Add(this); audio = GetComponent<AudioSource>(); luzx2.SetActive (false); } // Update is called once per frame void Update () { } void OnCollisionEnter() { if(!isDropped) { //Drop Target transform.position += Vector3.down*dropDistance; isDropped = true; ScoreManager.Instance.ScoreUp(targetValue); GameObject textInstance = Instantiate (TextOnSpotGO, transform.position, Quaternion.identity) as GameObject; textInstance.GetComponent<TextOnSpotScript>().DisplayText = targetValue * ScoreManager.Instance.scorePower + ""; // ScoreManager.Instance.ScoreUp(targetValue); // //ScoreManager.Instance.ScoreUp(scoreValue); // Instantiate (TextOnSpotGO, transform.position, Quaternion.identity); // TextOnSpotGO.GetComponent<TextOnSpotScript>().DisplayText = ScoreManager.Instance.scoretarjets * ScoreManager.Instance.scorePower + ""; audio.PlayOneShot(sonidotarget, 0.7F); //Check to see if the rest of the bank has been dropped bool resetBank = true; foreach(droptargetss target in dropTargets) { if(target.bankID == bankID) { if(!target.isDropped) { resetBank = false; } } } //Reset all drop targets in bank if the bank has been dropped if(resetBank) { //ScoreManager.Instance.score += bankValue; ScoreManager.Instance.ScoreUp(bankValue);///(scoreValue); Instantiate (TextOnSpotGO, transform.position, Quaternion.identity); TextOnSpotGO.GetComponent<TextOnSpotScript>().DisplayText = ScoreManager.Instance.bankvalue * ScoreManager.Instance.scorePower + ""; Invoke("ResetBank", resetDelay); ScoreManager.Instance.SetScorePower (2); audio.PlayOneShot(cantina, 0.7F); //cantinavideo.SetActive (true); luzx2.SetActive (true); luzx1.SetActive (false); } } } void ResetBank() { foreach(droptargetss target in dropTargets) { if(target.bankID == bankID) { target.transform.position += Vector3.up*dropDistance; target.isDropped = false; } } } } Alguna idea? He probado con dont destroy pero al reiniciar el nivel se duplica...
  6. Buenas tardes, tengo un pequeño lío. Tengo un Scoremanager donde controlo todas las puntuaciones de los objetos por ejemplo un bumper. Cojo los valores desde alli asi me es mas fácil cambiarlos globalmente. Pero nose que he liado....y ahora no veo la luz, estoy atascado. Este script es el maestro: using UnityEngine; using System.Collections; public class ScoreManager : MonoBehaviour { public static ScoreManager Instance; void Awake() { Instance = this; } public int score =; public int scorebumper =50000; public int scoredianas =100; public int scoreagujeros =10000; public int scoretarjets =100; public int scorePower = 1; public int bankvalue =10000; public TextMesh display; void Update() { if (display) { display.text = score.ToString ("D8"); } } public void ScoreUp(int points) { score += (points * scorePower); } public void SetScorePower(int power) { scorePower = power; } } Bien desde aqui controlo casi todo... Ahora el objeto que me da puntos por ejemplo el bumper.: using UnityEngine; using System.Collections; public class Bumper : MonoBehaviour { public float force = 100.0f; public float forceRadius = 1.0f; public int scoreValue= 100; public GameObject spotlight; public AudioClip bumpersound; AudioSource audio; public GameObject TextOnSpotGO; void Start () { audio = GetComponent<AudioSource> (); } void OnCollisionEnter() { foreach(Collider col in Physics.OverlapSphere(transform.position, forceRadius)) { if (col.GetComponent<Rigidbody> ()) { spotlight.SetActive (true); col.GetComponent<Rigidbody> ().AddExplosionForce (force, transform.position, forceRadius); audio.PlayOneShot (bumpersound, 0.7F); } else { Invoke ("apagado",01); } } ScoreManager.Instance.ScoreUp(scoreValue); Instantiate (TextOnSpotGO, transform.position, Quaternion.identity); TextOnSpotGO.GetComponent<TextOnSpotScript>().DisplayText = ScoreManager.Instance.scorebumper * ScoreManager.Instance.scorePower + ""; } void apagado() { spotlight.SetActive (false); } } lineas 40 a 42. en la 42 le digo que me coja los valores de Scoremanager y los digamos enseñe en un texto flotante en la pantalla. El problema me viene que , en la linea 40: ScoreManager.Instance.ScoreUp(scoreValue); cojo el valor de scorevalue (linea8), para que se me sume al marcador (Scoremanager), pero lo que quiero es cojer el valor de scorebumper no el de scoremanager, y me estoy volviendo loco!! Sera una tonteria pero me tiene saturado. Agradeceria una ayuda por favor. Gracias de antemano.
UnitySpain © Todos los derechos reservados 2020
×
×
  • Create New...