void Move(int entity) { MoveCmp moveCmp = Storage.GetComponent <MoveCmp>(entity); //Rigidbody rigidbody = Storage.GetComponent<RigidbodyCmp>(entity).rigidbody; MoveControls moveControls = moveCmp.moveControls; float force = moveCmp.move_speed * Time.fixedDeltaTime * 100; if (Input.GetKey(moveControls.Forvard) || Input.GetKey(moveControls.Backward) && Input.GetKey(moveControls.Left) || Input.GetKey(moveControls.Rigt)) { force /= (float)Math.Sqrt(2); } /*if (Input.GetKey(moveControls.Forvard)) * rigidbody.AddRelativeForce(new Vector3(force, 0, 0)); * else if (Input.GetKey(moveControls.Backward)) * rigidbody.AddRelativeForce(new Vector3(-force, 0, 0)); * * if (Input.GetKey(moveControls.Left)) * rigidbody.AddRelativeForce(new Vector3(0, 0, force)); * else if (Input.GetKey(moveControls.Rigt)) * rigidbody.AddRelativeForce(new Vector3(0, 0, -force)); * * * Vector2 gorizontal_speed = new Vector2(rigidbody.velocity.x, rigidbody.velocity.z); * * if (gorizontal_speed.magnitude > moveCmp.max_move_speed) * { * gorizontal_speed = gorizontal_speed.normalized * moveCmp.max_move_speed; * rigidbody.velocity = new Vector3(gorizontal_speed.x, rigidbody.velocity.y, gorizontal_speed.y); * }*/ }
protected override void onProcess(int familiesUpdateCount) { MoveControls controls = _controlSystemGO.First().GetComponent <MoveControls>(); SelectorPointer sp = _selectorPointerGO.First().GetComponent <SelectorPointer>(); if (sp.selectionChanged) { List <GameObject> controlled = sp.selectedGO.FindAll(go => go.CompareTag(controls.controlledTag)); if (controlled.Count > 0) { controls.controlled = new List <MoveToDestination>(); foreach (GameObject go in controlled) { controls.controlled.Add(go.GetComponent <MoveToDestination>()); } } else { controls.destination = sp.pointerPosition; foreach (MoveToDestination mtd in controls.controlled) { mtd.currentDestination = controls.destination; } } } }
void Move(int entity) { FPSCmp fPSCmp = Storage.GetComponent <FPSCmp>(entity); MoveControls moveControls = fPSCmp.moveControls; float force = fPSCmp.move_force * Time.fixedDeltaTime * 100; Vector3 forceVector = Vector3.zero; if (Input.GetKey(moveControls.Forvard) || Input.GetKey(moveControls.Backward) && Input.GetKey(moveControls.Left) || Input.GetKey(moveControls.Rigt)) { force /= (float)Math.Sqrt(2); } if (Input.GetKey(moveControls.Forvard)) { forceVector.x = force; } else if (Input.GetKey(moveControls.Backward)) { forceVector.x = -force; } if (Input.GetKey(moveControls.Left)) { forceVector.z = force; } else if (Input.GetKey(moveControls.Rigt)) { forceVector.z = -force; } forceVector /= 1000; fPSCmp.is_moving = forceVector.magnitude > 0.01f; fPSCmp.controller.Move(fPSCmp.transform.TransformDirection(forceVector)); }