// ... void FixedUpdate() { if (target) { Vector3 force = SteeringForces.seek( transform.position, target.transform.position, speed, target.arrivalRadius, target.arrivedRadius, visionRadius, scaleByDistance); agent.rigidbody.AddForce(force); } }
// ... void FixedUpdate() { Vector3 force = Vector3.zero; Collider[] colliders = UnityEngine.Physics.OverlapSphere(transform.position, checkForEnemiesRadius); for (int i = 0; i < colliders.Length; i++) { Enemy enemy = colliders[i].GetComponentInParent <Enemy>(); if (enemy) { force += SteeringForces.seek(transform.position, enemy.transform.position, speed); break; } } bullet.rigidbody.AddForce(force); }
// ... void FixedUpdate() { // Rotate. Quaternion rotationX = Quaternion.AngleAxis(rotationEulerX, Vector3.right); Quaternion rotationY = Quaternion.AngleAxis(rotationEulerY, Vector3.up); Quaternion rotationZ = Quaternion.AngleAxis(rotationEulerZ, Vector3.forward); Quaternion rotation = rotationX * rotationY * rotationZ; rigidbody.MoveRotation(rotation); // Move. Vector3 force = Vector3.zero; Vector3 forwardXZ = rotationY * Vector3.forward; force += forwardXZ * input.y; // Always seek to origin on Y-axis (seek y = 0.0f). Vector3 seekToOriginY = SteeringForces.seek(transform.position, Vector3.zero, 1.0f, seekToOriginArrivalRadius, seekToOriginArrivedRadius); seekToOriginY.x = 0.0f; seekToOriginY.z = 0.0f; force += seekToOriginY; force *= speed; rigidbody.AddForce(force); // Lock position on Y. Attempts to smoothly move player back to 0.0f. //Vector3 position = transform.position; //position.y = Mathf.Lerp(position.y, 0.0f, Time.deltaTime * moveToZeroSpeedY); //rigidbody.MovePosition(position); }
// ... void FixedUpdate() { Vector3 force = Vector3.zero; Vector3 targetPosition = GameManager.instance.player.transform.position; // If player is beyond (vision) range, seek to origin. if ((targetPosition - transform.position).magnitude > visionRadius) { force += SteeringForces.seek(transform.position, Vector3.zero, speed, originArrivalRadius, originArrivedRadius); } // Else, hunt down player. else { force += SteeringForces.seek(transform.position, targetPosition, speed, targetArrivalRadius, targetArrivedRadius); } Collider[] colliders = UnityEngine.Physics.OverlapSphere(transform.position, avoidOtherEnemiesRadius); for (int i = 0; i < colliders.Length; i++) { Enemy other = colliders[i].GetComponentInParent <Enemy>(); if (other) { if (other != this) { force += -SteeringForces.seek(transform.position, other.transform.position, avoidOtherEnemiesForce, avoidOtherEnemiesRadius); } } } rigidbody.AddForce(force); rigidbody.MoveRotation(rotation); }