private void HandleLinkEnd(OffMeshLinkMoveMethod MoveMethod) { if (MoveMethod != OffMeshLinkMoveMethod.Teleport && MoveMethod != OffMeshLinkMoveMethod.NormalSpeed) { Animator.SetTrigger(Landed); } }
private void HandleLinkStart(OffMeshLinkMoveMethod MoveMethod) { if (MoveMethod == OffMeshLinkMoveMethod.NormalSpeed) { Animator.SetBool(IsWalking, true); } else if (MoveMethod != OffMeshLinkMoveMethod.Teleport) { Animator.SetTrigger(Jump); } }
public void Init() { if (randomWaypoint == null) { randomWaypoint = new vFisherYatesRandom(); } if (randomPatrolPoint == null) { randomPatrolPoint = new vFisherYatesRandom(); } currentWaypoint = -1; currentPatrolPoint = -1; fwd = transform.forward; destination = transform.position; agent = GetComponent <UnityEngine.AI.NavMeshAgent>(); agent.updateRotation = false; agentPath = new UnityEngine.AI.NavMeshPath(); sphereSensor = GetComponentInChildren <v_AISphereSensor>(); if (sphereSensor) { sphereSensor.SetColliderRadius(maxDetectDistance); } animator = GetComponent <Animator>(); meleeManager = GetComponent <vMeleeManager>(); canAttack = true; attackCount = 0; sideMovement = GetRandonSide(); destination = transform.position; _rigidbody = GetComponent <Rigidbody>(); _rigidbody.useGravity = false; _rigidbody.isKinematic = false; _rigidbody.constraints = RigidbodyConstraints.None | RigidbodyConstraints.FreezeRotation | RigidbodyConstraints.FreezePositionX | RigidbodyConstraints.FreezePositionZ; _capsuleCollider = GetComponent <CapsuleCollider>(); healthSlider = GetComponentInChildren <v_SpriteHealth>(); head = animator.GetBoneTransform(HumanBodyBones.Head); oldPosition = transform.position; currentHealth = maxHealth; method = OffMeshLinkMoveMethod.Grounded; // set up Actions jumpOverLayer = UnityEngine.AI.NavMesh.GetAreaFromName("JumpOver"); stepUpLayer = UnityEngine.AI.NavMesh.GetAreaFromName("StepUp"); climbUpLayer = UnityEngine.AI.NavMesh.GetAreaFromName("ClimbUp"); useJumpOver = ActionIsEnabled(AIActions.JumpOver); useStepUp = ActionIsEnabled(AIActions.StepUp); useClimbUp = ActionIsEnabled(AIActions.ClimbUp); startPosition = transform.position; }
public void Init() { if (randomWaypoint == null) { randomWaypoint = new FisherYatesRandom(); } if (randomPatrolPoint == null) { randomPatrolPoint = new FisherYatesRandom(); } currentWaypoint = -1; currentPatrolPoint = -1; agent = GetComponent <NavMeshAgent>(); agent.updateRotation = false; agentPath = new NavMeshPath(); animator = GetComponent <Animator>(); meleeManager = GetComponent <MeleeEquipmentManager>(); canAttack = true; sideMovement = GetRandonSide(); destination = transform.position; _rigidbody = GetComponent <Rigidbody>(); _rigidbody.useGravity = false; _rigidbody.isKinematic = false; _rigidbody.constraints = RigidbodyConstraints.None | RigidbodyConstraints.FreezeRotation | RigidbodyConstraints.FreezePositionX | RigidbodyConstraints.FreezePositionZ; _capsuleCollider = GetComponent <CapsuleCollider>(); healthSlider = GetComponentInChildren <SpriteHealth>(); head = animator.GetBoneTransform(HumanBodyBones.Head); oldPosition = transform.position; currentHealth = startingHealth; method = OffMeshLinkMoveMethod.Grounded; if (vGameController.instance != null && vGameController.instance.currentPlayer != null) { target = vGameController.instance.currentPlayer.transform; } }
// Use this for initialization IEnumerator Start() { _projectile = Resources.Load <GameObject>("Prefabs/RangedAttack/ProjectileSlow"); anim = GetComponent <Animator>(); rb = GetComponent <Rigidbody2D>(); agent = GetComponent <NavMeshAgent>(); BoxCollider2D enemyCollider = GetComponent <BoxCollider2D>(); BoxCollider2D playerCollider = player.GetComponent <BoxCollider2D>(); attacking = false; // determines minimum space to leave between AI and player stoppingDistance = (playerCollider.size.x / 2) + (playerCollider.size.x / 2) + 0.01f; agent.stoppingDistance = stoppingDistance; // turns automatic off mesh link traveral off, we are going to handle it manually agent.autoTraverseOffMeshLink = false; // get the ground floor y position groundYPos = ground.transform.position.y + (ground.GetComponent <BoxCollider2D>().size.y / 2); while (true) { OffMeshLinkData omld = agent.currentOffMeshLinkData; // if we are not currently on an off mesh link the NavAgent controls movement automatically if (omld.offMeshLink != null) { // determine what type of Off Mesh Link we are currently on switch (omld.offMeshLink.area) { case 2: method = OffMeshLinkMoveMethod.Jump; break; case 3: method = OffMeshLinkMoveMethod.LevelOneJump; break; case 4: method = OffMeshLinkMoveMethod.LevelOneFall; break; case 5: method = OffMeshLinkMoveMethod.LevelTwoJump; break; case 6: method = OffMeshLinkMoveMethod.LevelTwoDownJump; break; default: method = OffMeshLinkMoveMethod.NormalSpeed; break; } } // handle each off mesh link appropriately if (agent.isOnOffMeshLink) { if (method == OffMeshLinkMoveMethod.NormalSpeed) { yield return(StartCoroutine(NormalSpeed(agent))); } if (method == OffMeshLinkMoveMethod.Jump) { yield return(StartCoroutine(Parabola(agent, 1.5f, 0.75f))); } if (method == OffMeshLinkMoveMethod.LevelOneJump) { yield return(StartCoroutine(Parabola(agent, 1.5f, 0.75f))); } if (method == OffMeshLinkMoveMethod.LevelOneFall) { yield return(StartCoroutine(Fall(agent, 0.475f))); } if (method == OffMeshLinkMoveMethod.LevelTwoJump) { yield return(StartCoroutine(Parabola(agent, 1.75f, 1.0f))); } if (method == OffMeshLinkMoveMethod.LevelTwoDownJump) { yield return(StartCoroutine(Parabola(agent, 1.5f, 1.0f))); } if (agent.enabled) { agent.CompleteOffMeshLink(); } } yield return(null); } }