public void UpdateFromPlayer(Vector3 newLinear, float newAngular) { so.linear = newLinear; so.angular = newAngular; k.position = rb.position; k.Update(so, maxSpeed, Time.deltaTime); //update player rb.position = k.position; rb.rotation = Quaternion.Euler(Vector3.up * (Mathf.Rad2Deg * -k.orientation)); }
/// <summary> /// UpdateMovement is used to apply the steering behavior output to the agent itself. /// It also brings together the linear and acceleration elements so that the composite /// result gets applied correctly. /// </summary> /// <param name="steeringlin"></param> /// <param name="steeringang"></param> /// <param name="time"></param> private void UpdateMovement(Vector3 _linear, float _angular, float time) { // Update the orientation, velocity and rotation so.linear = _linear; so.angular = _angular; k.position = rb.position; k.Update(so, maxSpeed, Time.deltaTime); //update player rb.position = k.position; rb.rotation = Quaternion.Euler(Vector3.up * (Mathf.Rad2Deg * -k.orientation)); }
void Update() { playerK.position = player.gameObject.GetComponent <Rigidbody>().position; enemyK.position = target.gameObject.GetComponent <Rigidbody>().position; DynamicAlign a = new DynamicAlign(playerK, enemyK, maxAcceleration, maxRotation, targetRadius, slowRadius); playerSO = new DynamicSeek(playerK, enemyK, maxAcceleration).getSteering(); playerK.Update(playerSO, maxSpeed, Time.deltaTime); enemyK.Update(enemySO, maxSpeed, Time.deltaTime); //update player player.gameObject.GetComponent <Rigidbody>().position = playerK.position; player.gameObject.GetComponent <Rigidbody>().rotation = Quaternion.Euler(Vector3.up * (Mathf.Rad2Deg * -playerK.orientation)); //update target target.gameObject.GetComponent <Rigidbody>().position = enemyK.position; target.gameObject.GetComponent <Rigidbody>().rotation = Quaternion.Euler(Vector3.up * (Mathf.Rad2Deg * -enemyK.orientation)); }