// Use this for initialization void Start() { rb = GetComponent <Rigidbody>(); props = GetComponent <em_properties>(); default_rotation = transform.rotation.eulerAngles; wep_controller = GetComponent <em_weapons_controller>(); rb.constraints = RigidbodyConstraints.FreezeRotationX | RigidbodyConstraints.FreezeRotationZ | RigidbodyConstraints.FreezePositionY; }
// Update is called once per frame void Update() { if (Mathf.Abs(Vector3.Distance(transform.position, targetPosition)) < 1f) { Collider[] colliders = Physics.OverlapSphere(transform.position, 1.5f); for (int i = 0; i < colliders.Length; i++) { if (colliders[i].tag == "player") { player_weapons_controller pwc = colliders[i].GetComponent <player_weapons_controller>(); pwc.SetDmg(atk, "RT"); } else if (colliders[i].tag == "enemy") { em_weapons_controller ewc = colliders[i].GetComponent <em_weapons_controller>(); ewc.SetDmg(atk, "RT"); } } Destroy(); } rb.velocity = transform.forward * spd; if (trackCd <= 0f) { if (target != null) { pullTargetPositionData(); } trackCd = trackCdMax; } else { trackCd -= Time.deltaTime; } // It works. Do not touch pls. Vector3 direction = targetPosition - transform.position; float newRot = Mathf.Atan(direction.x / direction.z) * 180f / Mathf.PI; float rotSpd = 20f; if (direction.z > 0f) { Quaternion newQuatRot = Quaternion.Euler(default_rotation.x, default_rotation.y + newRot, default_rotation.z); transform.rotation = Quaternion.Lerp(transform.rotation, newQuatRot, Time.deltaTime * rotSpd); } else { Quaternion newQuatRot = Quaternion.Euler(default_rotation.x, default_rotation.y + 180f + newRot, default_rotation.z); transform.rotation = Quaternion.Lerp(transform.rotation, newQuatRot, Time.deltaTime * rotSpd); } }
} // gets target position void OnCollisionEnter(Collision c) { if (c.collider.tag == "player") { player_weapons_controller pwc = c.collider.GetComponent <player_weapons_controller>(); pwc.SetDmg(atk, "RT"); } else if (c.collider.tag == "enemy") { em_weapons_controller ewc = c.collider.GetComponent <em_weapons_controller>(); ewc.SetDmg(atk, "RT"); } }