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

The problem of Enemy scale when he follow the player (script) . How to fix?

$
0
0
Hello , First , let's be clear ... I have a problem and I have somethings i need to get them done . let's start give Details , i use Unity 5.6.3p2 Personal on Windows 8.1 pro 32 bit (i cannot upgrade my window to 64 bit because when i do that i'll Lose all the Data , And i don't Want to lose my project , i upgrade him later) the project is going on PC Standalone - What i want do is make enemy (Zombie) follow the player with walk (run ) Animation when he Enter the Trigger of the Player he will stop the Animaion of the Walk and start the hit Animation . But in the fact the enemy when he follow the player he get close on him and he stop . And the problem is , when the enemy Start follow the player he will scaled up and pretty big . (I tried everything i scaled the zombie make him small but he still when start follow scaled to the same big scaled ) And i Don't want the enemy to follow me whenever i move , I want him to follow me (running after me ) directley when i press play . Im sorry , i have a lot of Questions to ask , just if you can help me please do , you'r not only helping me, you actually helping me and a lot of Game Devlopers that they want to learn :) So i'll put some scripts that i have used And Thanks For All the Answers and the help . scripts : (CSharp) using System.Collections; using System.Collections.Generic; using UnityEngine; public class enemy1 : MonoBehaviour { public Transform target; public int moveSpeed; public int rotationSpeed; public int maxdistance; private Transform myTransform; //------------------------------------// void Awake() { myTransform = transform; } void Start () { maxdistance = 2; } void Update () { if(Vector3.Distance(target.position, myTransform.position) > maxdistance) { //Move towards target transform.LookAt (target.position); myTransform.position += myTransform.forward * moveSpeed * Time.deltaTime; } } } (CSharp) using System.Collections; using System.Collections.Generic; using UnityEngine; public class EnemyTerritory : MonoBehaviour { public BoxCollider territory; GameObject player; bool playerInTerritory; public GameObject enemy; BasicEnemy basicenemy; // Use this for initialization void Start () { player = GameObject.FindGameObjectWithTag ("Player"); basicenemy = enemy.GetComponent (); playerInTerritory = false; } // Update is called once per frame void Update () { if (playerInTerritory == true) { basicenemy.MoveToPlayer (); } if (playerInTerritory = false) { basicenemy.Rest (); } } void OnTriggerEnter (Collider other) { if (other.gameObject == player) { playerInTerritory = true; } } void OnTriggerExit (Collider other) { if (other.gameObject == player) { playerInTerritory = false; } } } (CSharp) using System.Collections; using System.Collections.Generic; using UnityEngine; public class BasicEnemy : MonoBehaviour { public Transform target; public float speed = 3f; public float attack1Range = 1f; public int attack1Damage = 1; public float timeBetweenAttacks; // Use this for initialization void Start () { Rest (); } // Update is called once per frame void Update () { } public void MoveToPlayer () { //rotate to look at player transform.LookAt (target.position); transform.Rotate (new Vector3 (0, -90, 0), Space.Self); //move towards player if (Vector3.Distance (transform.position, target.position) > attack1Range) { transform.Translate (new Vector3 (speed * Time.deltaTime, 0, 0)); } } public void Rest () { } } (JavaScript) #pragma strict var target : Transform; var moveSpeed = 2.5; var rotationSpeed = 4; var attackThreshold = 0; var chaseThreshold = 0; var giveUpThreshold = 0; var attackRepeatTime = 0; private var chasing = false; private var attackTime = Time.time; var myTransform : Transform; function Awake() { myTransform = transform; } function Start() { target = GameObject.FindWithTag("Player").transform; } function Update () { var distance = (target.position - myTransform.position).magnitude; if (chasing) { myTransform.rotation = Quaternion.Slerp(myTransform.rotation, Quaternion.LookRotation(target.position - myTransform.position), rotationSpeed*Time.deltaTime); myTransform.position += myTransform.forward * moveSpeed * Time.deltaTime; if (distance > giveUpThreshold) { chasing = false; } if (distance < attackThreshold && Time.time > attackTime) { GetComponent.().Play("attack"); attackTime = Time.time + attackRepeatTime; } } else { if (distance < chaseThreshold) { chasing = true; GetComponent.().Play("run"); } } } (JavaScript) var spawn : Transform; var vectim : Transform; var speed : float; var rotationSpeed : float; var seeDistance : float = 30; var damage : int; var dice : int = 1; var baseDamage : int = 1; var anim : Animation; var hit : AudioClip; private var myTransform : Transform; private var idle : int = 0; private var returnToSpawn : int = 1; private var chasePlayer : int = 2; private var attackPlayer : int = 3; private var dead : int = 4; private var status = returnToSpawn; private var seconds : int; private var savedTime : int; private var damagePlayer : GameObject; function Awake(){ myTransform = transform; } function Start () { damagePlayer = gameObject.FindWithTag("Player"); } function Update () { var target : Transform; var dist = Vector3.Distance(spawn.position, myTransform.position); var aggro = Vector3.Distance(vectim.position, myTransform.position); var statusString : String; seconds = Time.time; if (dist > 50 || (aggro > seeDistance && dist > 3)) status = returnToSpawn; else if (dist < 30 && (aggro < seeDistance && aggro > 1)) status = chasePlayer; else if (aggro < 1) status = attackPlayer; switch(status){ case returnToSpawn: target = spawn; anim.GetComponent.().CrossFade("Take 001"); myTransform.rotation = Quaternion.Slerp(myTransform.rotation, Quaternion.LookRotation(target.position - transform.position), rotationSpeed * Time.deltaTime); myTransform.position += transform.forward * (speed/2) * Time.deltaTime; statusString = "Return"; if (dist < 3) status = idle; break; case chasePlayer: target = vectim; myTransform.rotation = Quaternion.Slerp(myTransform.rotation, Quaternion.LookRotation(target.position - myTransform.position), rotationSpeed * Time.deltaTime); myTransform.position += myTransform.forward * speed * Time.deltaTime; statusString = "Chase"; anim.GetComponent.().CrossFade("Take 001"); break; case attackPlayer: target = vectim; myTransform.rotation = Quaternion.Slerp(myTransform.rotation, Quaternion.LookRotation(target.position - transform.position), rotationSpeed * Time.deltaTime); statusString = "Attack"; if (aggro > 1) status = chasePlayer; if (seconds != savedTime){ damage = ((Random.Range(1, baseDamage)) * ((Random.Range(1, dice)))); damagePlayer.SendMessage ("PlayerDamage", damage); anim.GetComponent.().CrossFade("Fury"); GetComponent.().PlayOneShot(hit, 1.0 / GetComponent.().volume); savedTime = seconds; } break; case idle: target = spawn; break; default: break; } myTransform.eulerAngles = new Vector3(0, myTransform.eulerAngles.y, 0); } (JavaScript) var Player : Transform; var MoveSpeed = 4; var MinDist =999; var MaxDist = 10; function Start() { } function Update () { //Moves towrd player transform.LookAt (Player); if(Vector3.Distance(transform.position,Player.position ) >= MinDist) { transform.position += transform.forward * MoveSpeed*Time.deltaTime; if(Vector3.Distance(transform.position,Player.position) <= MaxDist) { } } }

Viewing all articles
Browse latest Browse all 1488

Trending Articles



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