Quantcast
Channel: Questions in topic: "enemy"
Viewing all articles
Browse latest Browse all 1488

Script issues [js]

$
0
0
Before I tell what's going on, let me I put a video with the source code. **Video:** http://www.indiedb.com/games/johnny-onion/videos/new-score-system-mobs-respawn-with-bugissue **EnemyHealth** var startingHealth : int = 100; // The amount of health the enemy starts the game with. var currentHealth : int; // The current health the enemy has. var sinkSpeed : float = 2.5f; // The speed at which the enemy sinks through the floor when dead. var scoreValue : int = 10; // The amount added to the player's score when the enemy dies. var deathClip : AudioClip; // The sound to play when the enemy dies. var enemy : GameObject; var playerHealth : PlayerHealth; private var anim : Animator; // Reference to the animator. private var enemyAudio : AudioSource; // Reference to the audio source. private var hitParticles : ParticleSystem; // Reference to the particle system that plays when the enemy is damaged. private var capsuleCollider : CapsuleCollider; // Reference to the capsule collider. private var isDead : boolean; // Whether the enemy is dead. private var isSinking : boolean; // Whether the enemy has started sinking through the floor. function Awake () { // Setting up the references. anim = GetComponent (Animator); enemyAudio = GetComponent (AudioSource); hitParticles = GetComponentInChildren (ParticleSystem); capsuleCollider = GetComponent (CapsuleCollider); // Setting the current health when the enemy first spawns. currentHealth = startingHealth; } function Update () { // If the enemy should be sinking... if(isSinking) { // ... move the enemy down by the sinkSpeed per second. transform.Translate (-Vector3.up * sinkSpeed * Time.deltaTime); } } public function TakeDamage (amount : int, hitPoint : Vector3) { // If the enemy is dead... if(isDead) // ... no need to take damage so exit the function. return; // Play the hurt sound effect. enemyAudio.Play (); // Reduce the current health by the amount of damage sustained. currentHealth -= amount; // Set the position of the particle system to where the hit was sustained. hitParticles.transform.position = hitPoint; // And play the particles. hitParticles.Play(); // If the current health is less than or equal to zero... if(currentHealth <= 0) { // ... the enemy is dead. Death (); } } function Death () { // The enemy is dead. isDead = true; // Turn the collider into a trigger so shots can pass through it. capsuleCollider.isTrigger = true; // Tell the animator that the enemy is dead. anim.SetTrigger ("Dead"); // Change the audio clip of the audio source to the death clip and play it (this will stop the hurt clip playing). enemyAudio.clip = deathClip; enemyAudio.PlayOneShot(deathClip); } public function StartSinking () { // Find and disable the Nav Mesh Agent. GetComponent (NavMeshAgent).enabled = false; // Find the rigidbody component and make it kinematic (since we use Translate to sink the enemy). GetComponent (Rigidbody).isKinematic = true; // The enemy should no sink. isSinking = true; // Increase the score by the enemy's score value. ScoreManager.score += scoreValue; Spawn (); // After 2 seconds destory the enemy. Destroy (gameObject, 2f); } function Spawn (){ // If the player has no health left... if(playerHealth.currentHealth <= 0f) { // ... exit the function. return; } Instantiate (enemy, transform.position, transform.rotation); Instantiate (enemy, transform.position, transform.rotation); } ----------------------- **EnemyMovement** private var player : Transform; // Reference to the player's position. private var playerHealth : PlayerHealth; // Reference to the player's health. private var enemyHealth : EnemyHealth; // Reference to this enemy's health. private var nav : NavMeshAgent; // Reference to the nav mesh agent. function Awake () { // Set up the references. player = GameObject.FindGameObjectWithTag ("Player").transform; playerHealth = player.GetComponent (PlayerHealth); enemyHealth = GetComponent (EnemyHealth); nav = GetComponent (NavMeshAgent); } function Update () { // If the enemy and the player have health left... if(enemyHealth.currentHealth > 0 && playerHealth.currentHealth > 0) { // ... set the destination of the nav mesh agent to the player. nav.SetDestination (player.position); } // Otherwise... else { // ... disable the nav mesh agent. nav.enabled = false; } } So yes, I'm learning a little bit of tutorials on unity - those about here http://unity3d.com/learn/tutorials/projects/survival-shooter - and something is going wrong, that i can't fix. In this film you can see it clearly, points are awarded properly but the problem is with the nav agent. The aim of such an arrangement script [in the original spawns are done in a separate component] is the simple fact that after the mob death, in circle of his place pops up two more on the animation 'birth' [in the simplest short, these beets pop out of the ground :)]. Well, I do not know how to fix these errors and I'm not a programmer - if anyone can help? [translated with little help from g.translate :) ]

Viewing all articles
Browse latest Browse all 1488

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>