//This is executed always when the object is selected void OnEnable() { waypointPos = serializedObject.FindProperty("pos"); waypointRot = serializedObject.FindProperty("rot"); length = serializedObject.FindProperty("length"); lpStyle = serializedObject.FindProperty("loopingStyle"); ipStyle = serializedObject.FindProperty("curveStyle"); rlStyle = serializedObject.FindProperty("rotationMethod"); wsStyle = serializedObject.FindProperty("anchorPointSpace"); ntStyle = serializedObject.FindProperty("positionNoiseType"); rntStyle = serializedObject.FindProperty("rotationNoiseType"); noiseAmplitude = serializedObject.FindProperty("positionNoiseAmplitude"); noiseFrequency = serializedObject.FindProperty("positionNoiseFrequency"); noiseAmplitudeR = serializedObject.FindProperty("rotationNoiseAmplitude"); noiseFrequencyR = serializedObject.FindProperty("rotationNoiseFrequency"); sineOffset = serializedObject.FindProperty("positionSineOffset"); sineOffsetR = serializedObject.FindProperty("rotationSineOffset"); moving = serializedObject.FindProperty("moving"); runOnStart = serializedObject.FindProperty("runOnStart"); delayMin = serializedObject.FindProperty("delayMin"); delayMax = serializedObject.FindProperty("delayMax"); stopAfter = serializedObject.FindProperty("stopAfter"); precomputePath = serializedObject.FindProperty("precomputePath"); drawGizmos = serializedObject.FindProperty("drawGizmos"); curveExpanded = serializedObject.FindProperty("curveExpanded"); noiseExpanded = serializedObject.FindProperty("noiseExpanded"); expandedNoise = noiseExpanded.boolValue; expandedCurve = curveExpanded.boolValue; mover = (AutoMover)target; }
private void SpawnEnemy(Vector2 cell) { List <Vector2> enemyRoute = new List <Vector2>(); enemyRoute.Add(RandomTileFromCell(cell)); foreach (Vector2 neighbor in neighborList[cell]) { enemyRoute.Add(RandomTileFromCell(neighbor)); } GameObject newEnemy = Instantiate(Globals.ENEMY, enemyRoute[0], Quaternion.identity); // newEnemy.name = newEnemy.name + i; newEnemy.transform.SetParent(ObjectContainer.instance.enemies.transform); AutoMover autoMover = newEnemy.GetComponent <AutoMover>(); Inventory inventory = newEnemy.GetComponent <Inventory>(); autoMover.spawnsWounded = true; autoMover.route = enemyRoute; autoMover.randomPatrol = PRNG.Range(0, 2) == 0; autoMover.pointMemory = PRNG.Range(0, 3); Inventory.ItemType[] types = (Inventory.ItemType[])System.Enum.GetValues(typeof(Inventory.ItemType)); Inventory.ItemType dropType = types[PRNG.Range(0, types.Length)]; Inventory.InventoryEntry item = new Inventory.InventoryEntry(dropType, 1); inventory.Add(item); // Position, route, weaponequipped, leashlength, randompatrol, pointmemory, inventory }
// Update is called once per frame void Update() { if (!active && Vector2.Distance(transform.position, PlayerMover.instance.transform.position) < 0.5f) { active = true; if (levelFinish) { if (AutoMover.InAlertStatus()) { Toast.ToastWrapper("Evade or eliminate enemies to proceed"); } else { PlayerMover.instance.GetComponent <Navigator>().Pause(); PlayerMover.instance.GetComponent <BoxCollider2D>().enabled = false; TransitionFader.instance.FinishLevel(); } } else { Sidebar.instance.ToggleInGameDialogue(true); DialogueParser.instance.ParseScene(messageId); } } // Reset for repeatable scenes else if (active && Vector2.Distance(transform.position, PlayerMover.instance.transform.position) > 0.5f) { active = false; } }
public void SpawnEnemy(Vector2 firstDestination) { // List<Vector2> enemyRoute = GenerateRoute(); List <Vector2> enemyRoute = new List <Vector2>(); //enemyRoute.Add(GetSpawnPoint()); enemyRoute.Add(firstDestination); enemyRoute.Add(ClosestPoint(firstDestination)); GameObject newEnemy = Instantiate(Globals.ENEMY, GetSpawnPoint(), Quaternion.identity); newEnemy.transform.SetParent(ObjectContainer.instance.enemies.transform); AutoMover autoMover = newEnemy.GetComponent <AutoMover>(); Inventory inventory = newEnemy.GetComponent <Inventory>(); autoMover.route = enemyRoute; autoMover.randomPatrol = true; autoMover.pointMemory = PRNG.Range(0, 3); Inventory.ItemType[] types = (Inventory.ItemType[])System.Enum.GetValues(typeof(Inventory.ItemType)); Inventory.ItemType dropType = types[PRNG.Range(0, types.Length)]; Inventory.InventoryEntry item = new Inventory.InventoryEntry(dropType, 1); inventory.Add(item); StartCoroutine(DelayedCall(autoMover, firstDestination)); //autoMover.SoundToPosition(firstDestination, true, Noise.Source.Gun, Vector2.zero); }
// Update is called once per frame void Update() { chaseVolume = Mathf.Clamp(chaseVolume + 0.5f * (Time.deltaTime * (AutoMover.InAlertStatus() ? 1 : -1)), 0, 1); idle.volume = 1 - chaseVolume; chase.volume = chaseVolume; }
void Awake() { mover = GetComponent <AutoMover> (); animator = playerRig.GetComponent <Animator> (); animator.SetTrigger(nameTrigger1); //animator.SetTrigger ("PeasantGoDamage2"); }
private LayerMask mask; //~(1 << 9) & ~(1 << 10) & ~(1 << 11); // Start is called before the first frame update void Start() { //subjects = new List<GameObject>(); //subjects.Add(PlayerMover.instance.gameObject); mask = LayerMask.GetMask(new string[] { "Default", "Player" }); player = PlayerMover.instance.GetComponent <GridMover>(); mover = GetComponent <AutoMover>(); }
// Use this for initialization void Start() { am = GetComponent <AutoMover>(); //getting the automover component phase = 0; //starting at the 1st of the 10 examples stopHeights = new float[10] { -8.85f, 1.05f, 13.4f, 25f, 35.7f, 45.3f, 56.45f, 70.4f, 87f, 104f }; //heights where to stop the mover for a while resumeTime = 0; //variable to store the time when the mover can be resumed am.StartMoving(); //starting the movement }
void UpdateAnimation() { AutoMover target = (AutoMover)GameState.Instance.GetGameScript <AutoMover>(targetID); if (!target) { Debug.LogError(string.Format("TriggerButton: No target AutoMover object with ID {0} found!", targetID)); return; } // Pause/unpause the target AutoMover animation by setting the speed. target.anim["AutoMover"].speed = isOn ? 1 : 0; }
// Use this for initialization void Start() { //Find the child object GameObject child = null; Transform[] children = GetComponentsInChildren <Transform>(); for (int i = 0; i < children.Length; ++i) { if (children[i].name == "ScriptChild") { child = children[i].gameObject; break; } } //Create components and disable moving immediately mover = gameObject.AddComponent <AutoMover>(); mover.RunOnStart = false; childMover = child.AddComponent <AutoMover>(); childMover.RunOnStart = false; //Add anchor points to the current positions mover.AddAnchorPoint(); childMover.AddAnchorPoint(); //Add some others a bit next to them mover.AddAnchorPoint(transform.position + new Vector3(0, 1, 0), new Vector3(0, 0, 90)); childMover.AddAnchorPoint(childMover.transform.position + new Vector3(0, -1, 0), new Vector3(0, 0, -90)); mover.InsertAnchorPoint(1, transform.position + new Vector3(1, 0, 0), new Vector3(0, 0, 180)); childMover.DuplicateAnchorPoint(1); childMover.SetAnchorPoint(1, childMover.transform.position + new Vector3(-1, 0, 0), new Vector3(0, 0, -180)); //Have the anchor points be defined in local space mover.AnchorPointSpace = AutoMoverAnchorPointSpace.local; childMover.AnchorPointSpace = AutoMoverAnchorPointSpace.local; //Change some of the properties mover.Length = 2.5f; mover.LoopingStyle = AutoMoverLoopingStyle.bounce; childMover.LoopingStyle = AutoMoverLoopingStyle.loop; mover.CurveStyle = AutoMoverCurve.Linear; childMover.CurveStyle = AutoMoverCurve.Linear; mover.PositionNoiseAmplitude = new Vector3(0.2f, 0.2f, 0.2f); mover.PositionNoiseType = AutoMoverNoiseType.sine; //Start moving the objects mover.StartMoving(); childMover.StartMoving(); }
public void Death() { AutoMover autoMover = GetComponent <AutoMover>(); HideMover hideMover = GetComponent <HideMover>(); Vector2 playerPos = Grapher.RoundedVector(PlayerMover.instance.transform.position); Vector2 position = Grapher.RoundedVector(transform.position); if (GetComponent <PlayerMover>()) { gameObject.SetActive(false); Sidebar.instance.GameOver(); // Debug.Log("Dead!"); // TODO: Game Over menu //TransitionFader.instance.Transition(0); } else if (autoMover && autoMover.spawnsWounded) { GameObject woundedEnemy = Instantiate(Globals.WEAK_ENEMY, position, Quaternion.identity, ObjectContainer.instance.wounded.transform); woundedEnemy.GetComponent <HideMover>().lastSawPlayer = playerPos; Inventory oldInventory = GetComponent <Inventory>(); Inventory newInventory = woundedEnemy.GetComponent <Inventory>(); if (oldInventory && newInventory) { newInventory.Add(oldInventory.inventory, oldInventory.wallet); } // Wounded enemies make noise GameObject tempNoise = Instantiate(Globals.NOISE, position, Quaternion.identity); tempNoise.GetComponent <Noise>().Initialize(true, Globals.KNIFE_VOLUME, Noise.Source.Knife); Destroy(gameObject); } else if (hideMover || (autoMover && !autoMover.spawnsWounded)) { GameObject corpse = Instantiate(Globals.CORPSE, position, Quaternion.identity); corpse.transform.parent = ObjectContainer.instance.corpses.transform; Inventory unitInventory = GetComponent <Inventory>(); Inventory corpseInventory = corpse.GetComponent <Inventory>(); if (unitInventory && corpseInventory) { corpseInventory.Add(unitInventory.inventory, unitInventory.wallet); } Destroy(gameObject); } }
//public GUIStyle style; void OnSceneGUI() { AutoMover autoMover = (AutoMover)target; GUI.color = new Color(1, 0, 0, 1); GUI.backgroundColor = Color.black; //GUI.BeginGroup(Rect.zero); for (int i = 0; i < autoMover.route.Count; ++i) { Handles.DrawSolidDisc(autoMover.route[i], Vector3.forward, 0.4f); Handles.DrawLine(autoMover.route[(i + 1) % autoMover.route.Count], autoMover.route[i]); Handles.Label(autoMover.route[i], i.ToString()); } //GUI.EndGroup(); }
private void NotifyEnemies() { enemies = ObjectContainer.instance.enemies; for (int i = 0; i < enemies.transform.childCount; ++i) { Transform enemy = enemies.transform.GetChild(i); if (Vector2.Distance(enemy.transform.position, transform.position) <= hearDistance) { AutoMover autoMover = enemy.GetComponent <AutoMover>(); if (autoMover) { autoMover.SoundToPosition(Grapher.RoundedVector(transform.position), madeByPlayer, source, secondaryPoint); } } } }
// Pauses the player and all enemies (does not modify timeScale) public void ActionPause(bool paused) { actionPaused = paused; // Necessary for message dialogue pauseDimmer.targetAlpha = paused ? 0.5f : 0; RefreshAllActionButtons(); PlayerMover.instance.enabled = !paused; List <GameObject> enemyList = ObjectContainer.GetEnemiesAndWounded(); foreach (GameObject unit in enemyList) { AutoMover autoMover = unit.GetComponent <AutoMover>(); if (autoMover != null) { autoMover.enabled = !paused; } HideMover hideMover = unit.GetComponent <HideMover>(); if (hideMover != null) { hideMover.enabled = !paused; } Airship airship = unit.GetComponent <Airship>(); if (airship != null) { airship.enabled = !paused; } } List <GameObject> projectiles = ObjectContainer.GetAllProjectiles(); foreach (GameObject projectile in projectiles) { Projectile proj = projectile.GetComponent <Projectile>(); if (proj != null) { proj.enabled = !paused; } } }
public static bool InAlertStatus() { if (ObjectContainer.instance) { List <GameObject> enemies = ObjectContainer.GetAllEnemies(); foreach (GameObject enemy in enemies) { AutoMover mover = enemy.GetComponent <AutoMover>(); if (mover && mover.awareness == State.Alert) { return(true); } } } return(false); }
// Start is called before the first frame update void Start() { // Make size variable? hearDistance * amt, localScale * amt? enemies = ReferenceHolder.instance.enemies; color = GetComponent <SpriteRenderer>().color; for (int i = 0; i < enemies.transform.childCount; ++i) { if (Vector2.Distance(enemies.transform.GetChild(i).transform.position, transform.position) <= hearDistance) { AutoMover mover = enemies.transform.GetChild(i).GetComponent <AutoMover>(); if (mover != null) { mover.SetDestination(transform.position, true); mover.SetChasing(true); } } } //collider.enabled = false; }
// Start is called before the first frame update void Start() { autoMover = GetComponent <AutoMover>(); baseViewDistance = autoMover.sightDistance; }
public IEnumerator DelayedCall(AutoMover autoMover, Vector2 firstDestination) { yield return(new WaitForSeconds(1)); autoMover.SoundToPosition(firstDestination, true, Noise.Source.Gun, Vector2.zero); }
// Start is called before the first frame update void Start() { player = ReferenceHolder.instance.player.GetComponent <GridMover>(); mover = GetComponent <AutoMover>(); rotator = GetComponent <Rotator>(); }
// Single gunshot, usable by both player and enemy public static void Gun(GameObject unit, Vector2 target) { bool attackerIsPlayer = unit.GetComponent <PlayerMover>(); // Prevent attacker from hitting themselves BoxCollider2D unitCollider = unit.GetComponent <BoxCollider2D>(); unitCollider.enabled = false; int instanceId = unitCollider.GetInstanceID(); Vector2 shotOrigin = unit.transform.position; //(Vector2)unit.transform.position + unit.GetComponent<GridMover>().GetRotator().FrontOffset(); // 3 Focus -> 10 deg Error, 2 Focus -> 20 deg Error // 1 Focus -> 30 deg Error, 0 Focus -> Can't attack float marginOfError = attackerIsPlayer ? 13 : 15; //+ (10 * (3 - unit.GetComponent<FieldUnit>().party[0].focus)); // min 10 err, max 30 / formerly memberIndex // Calculate if there's a clear line of sight Vector2 direction = target - (Vector2)unit.transform.position; // RaycastHit2D hit = Physics2D.Raycast(shotOrigin, direction/*, 9, mask*/); float angle = Vector2.Angle(unit.GetComponent <Rotator>().FrontOffset(), direction); // arg1 of Angle used to be unit.GetComponent<GridMover>().GetRotator().FrontOffset() // Generate an actual shot angle += Random.Range(0, marginOfError) * (Random.Range(0, 2) == 0 ? 1 : -1); // add margin of error direction = Quaternion.AngleAxis(angle, Vector3.forward) * direction; // This flattens the shot somehow RaycastHit2D hit = Physics2D.Raycast(shotOrigin, direction, 255, ~LayerMask.GetMask(LayerMask.LayerToName(unit.layer))); SoundManager.instance.Play(SoundManager.Sound.Gun, instanceId); // Debug.Log("layer: " + LayerMask.LayerToName(unit.layer)); if (hit.collider != null) { // Make sure to check WHAT is being hit... Player? Wall? Friendly fire? // source.PlayOneShot(gunshot); // play sound // Camera.main.GetComponent<Jerk>().Shake(1); // Replace this with something better UnitStatus targetHit = hit.collider.GetComponent <UnitStatus>(); if (targetHit) { targetHit.DamageHealth(); // formerly memberIndex AutoMover autoMover = hit.collider.GetComponent <AutoMover>(); if (autoMover) { autoMover.VisualToPosition(Grapher.RoundedVector(unit.transform.position)); } } GameObject tempNoise = Instantiate(Globals.NOISE, unit.transform.position, Quaternion.identity); tempNoise.GetComponent <Noise>().Initialize(attackerIsPlayer, Globals.GUN_VOLUME, Noise.Source.Gun); // Create and format line GameObject shotLine = ShapeManager.DrawLine(shotOrigin, hit.point, Globals.BRIGHT_WHITE, unit.transform); shotLine.transform.parent = unit.transform; LineRenderer shotRenderer = shotLine.GetComponent <LineRenderer>(); shotRenderer.startWidth = shotRenderer.endWidth = 0.07f; shotLine.AddComponent <AutoVanish>().timeToLive = 0.1f; } unit.GetComponent <BoxCollider2D>().enabled = true; }
void Awake() { mover = GetComponent <AutoMover> (); }