// Start is called before the first frame update void Start() { buildings = new GameObject[size * size]; transform.LookAt(originController.GetOrigin()); transform.position = Quaternion.LookRotation(transform.forward) * new Vector3(0, 0, -10); transform.Rotate(new Vector3(-90, 0, 0), Space.Self); for (int i = 0; i < size * size; i++) { buildings[i] = GameObject.Instantiate(buildingPrefabs[Random.Range(0, buildingPrefabs.Length)], transform.position, transform.rotation); buildings[i].transform.localScale = new Vector3(Random.Range(10, 20), Random.Range(5, 10), Random.Range(10, 20)); } }
// Update is called once per frame void Update() { if (first) { target = GameObject.FindGameObjectWithTag("Player"); targetRB = target.GetComponent <Rigidbody>(); first = false; } origin = originController.GetOrigin(); if (prevOrigin != origin) { transform.position += (origin - prevOrigin); prevOrigin = origin; } }
public async Task GetOriginValidIdReturnsOk200WithObject() { var origin = await _controller.GetOrigin(1) as OkNegotiatedContentResult <Origin>; Assert.IsInstanceOf <OkNegotiatedContentResult <Origin> >(origin); }
void FixedUpdate() { Vector3 vel = rb.velocity; Vector3 velNorm = rb.velocity.normalized; float aoa = Vector3.Angle(rb.velocity.normalized, transform.rotation * Vector3.forward); float aoaDot = Vector3.Dot(velNorm, transform.rotation * Vector3.back); //angle of attack where 1 is parallel and 0 is perpendicular. float dynamPress = (density * vel.sqrMagnitude) / 2; float dragCoef = dragCoefBase + -Mathf.Cos(2 * Mathf.Deg2Rad * aoa) + 1; float drag = dragCoef * dynamPress * area; Vector3 dragDir = -velNorm; float liftCoef = 0.1f * aoa; if (liftCoef > 2) { liftCoef = 2; } float lift = liftCoef * dynamPress * area; Vector3 liftDir = Vector3.ProjectOnPlane(transform.rotation * Vector3.forward, velNorm); float momentCoef = 0.00004f * Mathf.Pow(aoa, 2); float moment = momentCoef * dynamPress * area * chord; Vector3 momentDir = Vector3.Cross(transform.forward, velNorm); rb.AddForce(drag * dragDir); rb.AddForce(lift * liftDir); rb.AddForce(transform.rotation * Vector3.forward * thrust); rb.AddForce(mass * 9.8f * Vector3.forward); rb.AddTorque(moment * momentDir - 20000 * rb.angularVelocity.normalized * rb.angularVelocity.sqrMagnitude); // Combination of natural aerodynamic stabilization and computer-aided-flight stabilization. if (photonView.IsMine) { float speed = 1f; if (Input.GetKey(KeyCode.LeftShift)) { speed = 10; } if (Input.GetKey(KeyCode.LeftControl)) { speed = 100; } if (Input.GetKey(KeyCode.W)) { player.transform.Translate(Vector3.forward * speed); } if (Input.GetKey(KeyCode.S)) { player.transform.Translate(Vector3.back * speed); } if (Input.GetKey(KeyCode.A)) { player.transform.Translate(Vector3.left * speed); } if (Input.GetKey(KeyCode.D)) { player.transform.Translate(Vector3.right * speed); } if (Input.GetKey(KeyCode.Space)) { player.transform.Translate(Vector3.up * speed); //rb.AddForce(Vector3.up * speed); } if (Input.GetKey(KeyCode.C)) { player.transform.Translate(Vector3.down * speed); } if (Input.GetKey(KeyCode.Q)) { player.transform.Rotate(Vector3.forward); } if (Input.GetKey(KeyCode.E)) { player.transform.Rotate(Vector3.back); } if (Input.GetKey(KeyCode.UpArrow)) { //player.transform.Rotate(Vector3.right); rb.AddTorque(transform.right * 0.01f * dynamPress * area * chord); } if (Input.GetKey(KeyCode.DownArrow)) { //player.transform.Rotate(Vector3.left); rb.AddTorque(-transform.right * 0.01f * dynamPress * area * chord); } if (Input.GetKey(KeyCode.LeftArrow)) { player.transform.Rotate(Vector3.down); } if (Input.GetKey(KeyCode.RightArrow)) { player.transform.Rotate(Vector3.up); } if (shareCounter > 4) { shareCounter = 0; } if (shareCounter == 0) { photonView.RPC("SharePosition", RpcTarget.All, transform.position - originController.GetOrigin(), transform.rotation); } } else // photonView is not mine, this is not the local player. { print("origin: " + originController.GetOrigin()); transform.position = originController.GetOrigin() + sharedPos; transform.rotation = sharedRot; } }