- Home /
Question by
Manoleiro · Feb 15, 2015 at 08:49 PM ·
shootingbulletenemyaienemydamage
Char shots oneside only / kills enemy on specific place.
Problem No.1 : I made this code on my computer and when i putted the code on another with the same code (the same game) it shots only to right side.
Problem No.2 : Also when i shot the enemy it kills it only on a specific place, i mean on a specific spot( when the bullet hits him on the center of him).
What i am doing wrong ?
Script UserControl: using UnityEngine; using UnityEngine.UI;
[RequireComponent(typeof (PlatformerCharacter2D))]
public class Platformer2DUserControl : MonoBehaviour
{
public GameObject bulletDrop;
private enum Side { left, right };
private Side side = Side.right;
private PlatformerCharacter2D character;
private bool jump;
private GameManager gameManager;
private int newScoreValue;
private int newVitalityValue;
private void Awake()
{
character = GetComponent<PlatformerCharacter2D>();
GameObject gameManagerObject = GameObject.FindWithTag("GameManager");
if (gameManagerObject != null) {
gameManager =gameManagerObject.GetComponent<GameManager>();
}
if (gameManager == null) {
Debug.Log("cant Find gameManager Script" );
}
}
private void Update()
{
if(!jump)
// Read the jump input in Update so button presses aren't missed.
jump = Input.GetButtonDown("Jump");
if (Input.GetButtonDown ("Fire1")) {
Quaternion rot;
if(side == Side.right) rot = Quaternion.identity;
else rot = Quaternion.Euler(new Vector3(0,0,180));
Instantiate (bulletDrop, transform.position, rot);
}
Vector3 myPos = transform.position;
foreach (GameObject coin in GameObject.FindGameObjectsWithTag("coinDrop")) {
Vector3 coinPos = coin.transform.position;
if((coinPos-myPos).magnitude < 1.0) {
Destroy (coin);
Debug.Log("+1 coin collected");
newScoreValue = 50;
gameManager.CalculateScore (newScoreValue);
}
}
GameObject[] enemies = GameObject.FindGameObjectsWithTag ("enemy");
foreach (GameObject enemy in enemies) {
Vector3 diff = enemy.transform.position - transform.position;
if (diff.magnitude < 1.8) {
if(gameManager.vitality > 0){
Debug.Log ("you've lost 1 life");
Destroy(enemy);
newVitalityValue = -1;
gameManager.CalculateVitality(newVitalityValue);
}
}
}
}
private void FixedUpdate()
{
// Read the inputs.
//bool crouch = Input.GetKey(KeyCode.LeftControl);
float h = Input.GetAxis("Horizontal");
// Pass all parameters to the character control script.
character.Move(h, jump);
jump = false;
}
}
Script BulletBehavior:
using System.Collections;
public class BulletDropBehavior : MonoBehaviour {
public float speed = 500.0f;
private GameManager gameManager;
private int newValue;
void Start () {
GameObject gameManagerObject = GameObject.FindWithTag("GameManager");
if (gameManagerObject != null) {
gameManager =gameManagerObject.GetComponent<GameManager>();
}
if (gameManager == null) {
Debug.Log("cant Find gameManager Script" );
}
}
void Update () {
transform.Translate (speed * Time.deltaTime, 0, 0);
if (transform.position.x > 3.0f)
Destroy (gameObject);
GameObject[] enemies = GameObject.FindGameObjectsWithTag ("enemy");
foreach (GameObject enemy in enemies) {
Vector3 diff = enemy.transform.position - transform.position;
if(diff.magnitude < 0.3) {
Destroy (enemy);
Destroy (gameObject);
Debug.Log("+1 enemy killed");
newValue = 150;
gameManager.CalculateScore (newValue);
}
}
}
}
Comment
Your answer
Follow this Question
Related Questions
Enemy Damage problem 1 Answer
Enemy shooting player driving me crazy! 2 Answers
Shooting style like enter the dungeon 0 Answers
Very basic Instantiate Question 2 Answers