void AttackPlayer() { // Old code - to be removed... // GameObject o = GameObject.CreatePrimitive(PrimitiveType.Sphere); // o.transform.position = transform.position; // o.GetComponent<Renderer>().material.SetColor("_Color", Color.red); // o.transform.LookAt(target.transform); // o.transform.localScale = new Vector3(0.4f, 0.4f, 0.4f); // o.transform.parent = transform; // Damage dmg = new Damage(Random.Range(weaponDmgMin, weaponDmgMax), 0f, true, false, false); // dmg = stats.RealDamage(dmg); // ProjectileController pb = o.AddComponent<ProjectileController>(); // pb.dmg = dmg; // pb.speed = 10f; // pb.ttl = 5f; // o.GetComponent<SphereCollider>().isTrigger = true; // Rigidbody rb = o.AddComponent<Rigidbody>(); // rb.useGravity = false; // rb.isKinematic = true; // Generates projectiles var projectileInstance = Instantiate(projectile, transform.position, transform.rotation); ProjectileMover pm = projectileInstance.GetComponent <ProjectileMover>(); projectileInstance.GetComponent <SphereCollider>().isTrigger = true; projectileInstance.transform.parent = transform; Damage dmg = new Damage(Random.Range(weaponDmgMin, weaponDmgMax), 0f, true, false, false); dmg = stats.RealDamage(dmg); pm.dmg = dmg; }
internal void Initialize(Projectile projectile) { Element[] projectileElements = projectile.elements.ToArray(); damage = ElementUtility.ProjectileDamage(projectileElements); bouncesLeft = ElementUtility.Bounces(projectileElements); chainLength = ElementUtility.ChainLength(projectileElements); speed = ElementUtility.ProjectileSpeed(projectileElements); AOEDamageDealer = new AOEDamageDealer(ElementUtility.AoE(projectileElements) * projectile.areaOfEffectMultiplier, transform, projectile.elements); primaryMovementType = ElementUtility.Movement(projectile.elements.Peek()); this.projectile = projectile; switch (primaryMovementType) { case ProjectileMovementType.BounceOnGround: Parabola[] parabolas = ParabolaCalculator.CalculateFullTrajectory(transform.position, projectile.target.position, ElementUtility.ProjectileSpeed(projectileElements), transform.position.y, 0, bouncesLeft); projectileMover = new ProjectileMover(transform, parabolas, ElementUtility.ProjectileSpeed(projectile.elements.ToArray()) * projectile.speedMultiplier); break; case ProjectileMovementType.StraightChain: projectileMover = new ProjectileMover(transform, projectile.target, ElementUtility.ProjectileSpeed(projectile.elements.ToArray()) * projectile.speedMultiplier); break; case ProjectileMovementType.AOEAtTower: projectileMover = new ProjectileMover(projectile.speedMultiplier * speed, 0, transform); OnAOEAtTowerActivation(); break; } }
// Update is called once per frame void FixedUpdate() { // Distance of enemy from player float distance = Vector3.Distance(this.transform.position, playerTransform.transform.position); if (distance < minChallengeDistance) { challenged = true; } else if (distance > maxChallengeDistance) { challenged = false; } // Actions when enemy is challenged if (challenged) { directionOfPlayer = (playerTransform.position - this.transform.position).normalized; // Get direction to move towards this.transform.Translate(directionOfPlayer * speed * Time.deltaTime, Space.World); // Move enemey to player this.transform.LookAt(playerTransform, worldUp); // Points torwards Player // Firing rate timer -= Time.deltaTime; // Always shooting if (true) { if (timer <= 0) { Vector3 thisDirection = this.transform.rotation * Vector3.forward; // Initial position for the projectile Vector3 intialPosition = this.transform.position + thisDirection; // Instantiate bullet with intialPosition and random rotation GameObject bulletObject = (GameObject)Instantiate(bullet, intialPosition, Random.rotation); // Get the script ProjectileMover projectileMover = (ProjectileMover)bulletObject.transform.GetComponent("ProjectileMover"); // Set origin of the projectile projectileMover.setOrigin(this.gameObject); projectileMover.fire(); // Reset timer = firingRate; } } } else if (!challenged) { // Random idle animations } }
// Update is called once per frame void Update() { float currSpeed = speed * Time.deltaTime; // Current Speed float xInput = Input.GetAxis("Horizontal"); // Inputs float yInput = Input.GetAxis("Vertical"); Vector3 mousePosition = Input.mousePosition; playerMover.velocity = new Vector2(xInput * currSpeed, yInput * currSpeed); // Velocity // Mouse position Vector3 pos = Camera.main.ScreenToWorldPoint(new Vector3(mousePosition.x, mousePosition.y, 10)); this.transform.LookAt(pos, worldUp); // When either xInput or yInput isn't 0, recalculate rotation if (xInput != 0 || yInput != 0) { playerMover.rotation = Mathf.Atan2(xInput, yInput) * -180 / Mathf.PI; // Rotation } //Press space to activate/deactivate upgrades if (Input.GetButton("Jump")) { PeaShooterBehavior.upgradeDamage = !PeaShooterBehavior.upgradeDamage; PeaShooterBehavior.upgradeSpeed = !PeaShooterBehavior.upgradeSpeed; } // Firing rate timer -= Time.deltaTime; if (Input.GetButton("Fire1")) { if (timer <= 0) { Vector3 thisDirection = this.transform.rotation * Vector3.forward; // Initial position for the projectile Vector3 intialPosition = this.transform.position + thisDirection; // Instantiate bullet with intialPosition and random rotation GameObject bulletObject = (GameObject)Instantiate(bullet, intialPosition, Random.rotation); // Get the script ProjectileMover projectileMover = (ProjectileMover)bulletObject.transform.GetComponent("ProjectileMover"); // Set origin of the projectile projectileMover.setOrigin(this.gameObject); projectileMover.fire(); // Reset timer = firingRate; } } }
IEnumerator ShootBulletCoroutine(float delay) { GameObject newProjectile = Instantiate(PlayerProjectile, transform.position, Quaternion.identity); ProjectileMover mover = newProjectile.GetComponent <ProjectileMover>(); mover.MovingDirection = new Vector2(0, 1); CanShoot = false; yield return(new WaitForSeconds(delay)); CanShoot = true; }
void fireMeme() { Vector2 firePos = getPointAlongHitbox();//new Vector2(transform.position.x, getPointAlongHitbox().y); GameObject newMeme = Instantiate(memePrefab, transform.parent); newMeme.transform.rotation = transform.rotation; ProjectileMover newMover = newMeme.AddComponent <ProjectileMover>(); float angleOfElevation = transform.rotation.eulerAngles.z; newMover.init(firePos, fireSpeed, projectileGravity, angleOfElevation); }
public virtual bool onCatch(MemeCatcher _catcher) { if (_catcher.heldMemes.Count >= _catcher.memeLimit) { return(true); } ProjectileMover mover = GetComponent <ProjectileMover>(); if (mover != null) { Destroy(mover); } return(true); }
private void SetupEntityBullet() { var collider = entity.addComponent <CircleCollider>(); collider.radius = 2f; _collider = collider; _mover = _bullet.addComponent(new ProjectileMover()); Flags.setFlagExclusive(ref _collider.collidesWithLayers, Layers.MapObstacles); Flags.setFlag(ref _collider.collidesWithLayers, Layers.Player); Flags.setFlagExclusive(ref _collider.physicsLayer, Layers.Bullet); // Hack to avoid moving without collider and causing nullreference _collider.onAddedToEntity(); _mover.onAddedToEntity(); }
private void OnTriggerEnter2D(Collider2D collision) { if (collision.gameObject.layer == LayerMask.NameToLayer("PlayerProjectile")) { ProjectileMover mover = collision.GetComponent <ProjectileMover>(); // 만약 충돌 대상 총알이 다른 오브젝트와 충돌한 적이 없다면? if (!mover.isCollisioned) { mover.SwitchCollisioned(true); // 총알 파티클 비활성화 Transform particle = collision.transform.FindChild("Particle System"); if (particle) { particle.parent = null; } if (particle_on_Destroy) { GameObject new_particle = Instantiate(particle_on_Destroy, transform.position, transform.rotation); } Destroy(collision.gameObject); HP--; if (HP <= 0) { Destroy(gameObject); } } } }
void ApplyMouseInput() { Vector3 pos = Input.mousePosition; pos.z = 10; cursor.transform.position = Camera.main.ScreenToWorldPoint(pos); if (Input.GetMouseButtonDown(0)) { Debug.Log("Ready..."); nextKnifeVelocity = 8.0f; } else if (Input.GetMouseButtonUp(0)) { Debug.Log(nextKnifeVelocity.ToString()); GameObject newKnife = Instantiate(knife, transform.position + knifeOffset, Quaternion.identity); ProjectileMover knifeScript = newKnife.GetComponent <ProjectileMover>(); Vector2 knifeVector = new Vector2((cursor.transform.position.x - this.transform.position.x), (cursor.transform.position.y - this.transform.position.y)); knifeVector = knifeVector.normalized * nextKnifeVelocity; knifeScript.velocity = knifeVector; } else if (Input.GetMouseButton(0)) { nextKnifeVelocity = Mathf.MoveTowards(nextKnifeVelocity, knifeVelocity, knifeAcceleration * Time.unscaledDeltaTime); Vector2 knifeVector = new Vector2((cursor.transform.position.x - this.transform.position.x), (cursor.transform.position.y - this.transform.position.y)); knifeVector = knifeVector.normalized * nextKnifeVelocity; larc.RenderArc(knifeVector); } if (Input.GetMouseButtonDown(1)) { Time.timeScale = .1f; } else if (Input.GetMouseButtonUp(1)) { Time.timeScale = 1.0f; } }
public override void OnAddedToEntity() { Velocity = new Vector2(100, 0); _mover = Entity.GetComponent <ProjectileMover>(); }
public override void onAddedToEntity() { _mover = entity.getComponent <ProjectileMover>(); }
public override void OnAddedToEntity() { mover = Entity.GetComponent <ProjectileMover>(); }
public override void OnAddedToEntity() { _pmover = Entity.AddComponent(new ProjectileMover()); }