UnityProjekt/Assets/Scripts/WeaponFireController.cs
NorbiPeti 18ac1cba8c
Flamethrower on right click, flying enemies
Proper collisions, can kill with flamethrower as well
2020-12-08 00:13:57 +01:00

48 lines
1.7 KiB
C#

using System.Collections;
using System.Collections.Generic;
using System.Linq;
using UnityEngine;
public class WeaponFireController : MonoBehaviour
{
public GameObject prefab;
public Transform firePoint;
private ObjectPool _pool;
private ParticleSystem _particle;
// Start is called before the first frame update
void Start()
{
_pool = new ObjectPool(prefab, 10);
_particle = firePoint.GetComponent<ParticleSystem>();
}
// Update is called once per frame
void Update()
{
if(Input.GetButtonDown("Fire1"))
{
var theRocket = _pool.GetObject();
var rocketTransform = theRocket.transform;
rocketTransform.position = firePoint.position;
//https://forum.unity.com/threads/look-rotation-2d-equivalent.611044/
// vector from this object towards the target location
var vectorToTarget = Camera.main.ScreenToWorldPoint(Input.mousePosition) - rocketTransform.position;
// rotate that vector by 90 degrees around the Z axis
Vector3 rotatedVectorToTarget = Quaternion.Euler(0, 0, 90) * vectorToTarget;
// get the rotation that points the Z axis forward, and the Y axis 90 degrees away from the target
// (resulting in the X axis facing the target)
Quaternion targetRotation = Quaternion.LookRotation(Vector3.forward, rotatedVectorToTarget);
rocketTransform.rotation = targetRotation;
theRocket.SetActive(true);
}
if (Input.GetButtonDown("Fire2"))
_particle.Play();
else if (Input.GetButtonUp("Fire2"))
_particle.Stop();
}
}