How to Equip/ Dequip by deleting a Gameobject
Hi, so I've been having some problems with making a script that allows the player to equip/ dequip a torch. My enemy AI is set to see if the torch is close to them, then they will attack. I've tried hiding it, but it doesn't destroy it so the enemy can still detect it. Im using Unity 3D and I'm running on Mac OSX. I also need the object to also be a child of my player.
Equip Script: #pragma strict
var projectile : GameObject; var fireRate : float = 0.5; internal var nextFire : float; var speed : float = 5; var weaponFireFX : AudioClip; var FirstPersonCharacter : Transform; var Torch : Transform;
function OnCollisionEnter (collision : Collision){ var Torch : Transform; FirstPersonCharacter = Instantiate(FirstPersonCharacter, Vector3.zero, Quaternion.identity); FirstPersonCharacter.parent = Torch; FirstPersonCharacter.localRotation = Quaternion.identity; // rotates the object like the parent FirstPersonCharacter.localPosition = Vector3(0.4790001,-0.9,0.32); // define here your "exact point" within the parent } function Start () {
}
function Update () {
//fire1 button is left mouse or left control key
if (Input.GetButtonDown("space")) { GetComponent.().enabled = !GetComponent.().enabled; } if(Input.GetButtonDown("space")){ GetComponent.().enabled = !GetComponent.().enabled; } }
Enemy AI Script: var player : GameObject; var speed = 6.0; var range = 10.0; var hitRange = 5.0; var enemyDamage = 10.0; var rotationSpeed = 5.0;
function Start () { player = GameObject.FindGameObjectWithTag("Player"); }
function FixedUpdate() { //move towards player var distance = Vector3.Distance( player.transform.position, transform.position); if (distance > range) { return; }
else
{
var delta = player.transform.position - transform.position;
delta.Normalize();
delta.y = 0;
var moveSpeed = speed * Time.deltaTime;
transform.position = transform.position + (delta * moveSpeed);
delta.y = 0;
transform.rotation = Quaternion.Slerp (transform.rotation, Quaternion.LookRotation(delta),
rotationSpeed * Time.deltaTime);
transform.eulerAngles = Vector3(0, transform.eulerAngles.y, 0);
if (distance < hitRange)
{
player.SendMessageUpwards
("ApplyDamage", enemyDamage, SendMessageOptions.DontRequireReceiver);
}
}
}
Thanks for your time :)
Your answer
Follow this Question
Related Questions
C# - JS problem. 1 Answer
Error when trying to make script for main menu. 0 Answers
Jump Script not Working JavaScript 1 Answer
Destroy a spawning enemy prefab with an weapon prefab 0 Answers
Trying to make a first person RPG 1 Answer