private void CreateAttack() { GameObject beam = GameObject.Instantiate(Resources.Load("Prefabs/Beam")) as GameObject; BeamObject beamScript = beam.GetComponent <BeamObject>(); beamScript.Make(player); }
public void AddProjectile(BeamObject beanObject) { beanObject.spawnTime = PropertiesUtility.time; beanObject.duration = beanObject.baseBullet.fireNumCd; projectileHolder.Add(beanObject); }
public void Fire(DanmakuEditor.BaseBullet baseBullet, Vector3 p_direction) { DanmakuEditor.BeamBullet beamInfo = (DanmakuEditor.BeamBullet)baseBullet; if (beamObject == null) { beamObject = CreateBeam(beamInfo); OnBeamCreate(beamObject); } }
Vector3[] GetBeamPaths(BeamObject beamObject, Vector3 direction) { Vector3 characterPos = beamObject.fromCharacter.transform.position; int hitsNum = Physics2D.RaycastNonAlloc(characterPos, direction, beamLengthRaycastCache, beamObject.baseBullet.beamLength); Vector3 default_dest = characterPos + (direction) * beamObject.baseBullet.beamLength; Vector3 destination = FindFirstRaycast(hitsNum, beamLengthRaycastCache, default_dest, beamObject); beamPaths[0].Set(characterPos.x, characterPos.y, 0); beamPaths[1].Set(destination.x, destination.y, 0); return(beamPaths); }
private BeamObject CreateBeam(BeamBullet beamBullet) { GameObject projectile = Pooling.PoolManager.instance.ReuseObject(beamBullet.poolObjectID); BeamObject baseProjectile = projectile.GetComponent <BeamObject>(); baseProjectile.SetUp(beamBullet, PropertiesUtility.time); baseProjectile.lineRenderer.startWidth = beamBullet.beamWidth; baseProjectile.lineRenderer.endWidth = beamBullet.beamWidth; baseProjectile.fromCharacter = _self; projectile.transform.localPosition = Vector3.zero; return(baseProjectile); }
private void OnBeamAdded(BeamObject projectile) { _beamStateController.AddProjectile(projectile); }
private Vector3 FindFirstRaycast(int hitLength, RaycastHit2D[] hits, Vector3 defaultDest, BeamObject beamObject) { for (int i = 0; i < hitLength; i++) { if (hits[i].collider.gameObject != beamObject.fromCharacter.gameObject) { return(hits[i].point); } } return(defaultDest); }
public void UpdateBeamState(BeamObject beamObject, Vector3 direction) { beamObject.lineRenderer.SetPositions(GetBeamPaths(beamObject, direction)); }
public void Reset() { beamObject = null; }