Ejemplo n.º 1
0
        public void FaceTo(Vector3 pt)
        {
            Vector3 dir = pt - transform.position;

            Angle = Vector3.Angle(dir, Vector3.forward);
            if (dir.x < 0f)
            {
                Angle -= 360;
            }

            facing = Utilities.GetFacing(Angle);
//            Debug.Log("y=" + Angle + " " + dir.x + ":" + dir.y);
        }
Ejemplo n.º 2
0
 public void FaceTo(float _angle)
 {
     facing = Utilities.GetFacing(_angle);
 }
Ejemplo n.º 3
0
        internal void FixedUpdate()
        {
            bool       is_rotate = false;
            bool       is_move   = false;
            RaycastHit hit;

            float hsp      = speed * Input.GetAxis("Horizontal");
            float vsp      = speed * Input.GetAxis("Vertical");
            float scrollSp = -zoomSpeed *Input.GetAxis("Mouse ScrollWheel");

            Vector3 rotateValue;
            Vector3 old_position = transform.position;

            /*if (Input.GetKey(KeyCode.Z)) {
             * rotateValue = new Vector3( -1, 0, 0);
             * transform.eulerAngles = transform.eulerAngles - rotateValue;
             * } else
             * if (Input.GetKey(KeyCode.X)) {
             * rotateValue = new Vector3( 1, 0, 0);
             * transform.eulerAngles = transform.eulerAngles - rotateValue;
             * } else*/
            if (Input.GetKey(KeyCode.Q))
            {
                rotateValue = new Vector3(0, 1, 0);
                Ray ray = Camera.main.ScreenPointToRay(new Vector3(Screen.width / 2, Screen.height / 2, 0));
                if (Physics.Raycast(ray, out hit, 100))
                {
                    transform.RotateAround(hit.point, Vector3.up, 1);
                }
                //transform.eulerAngles = transform.eulerAngles - rotateValue;
                facing    = CameraFacing.Instance.getFacing();
                is_rotate = true;
            }
            else
            if (Input.GetKey(KeyCode.E))
            {
                rotateValue = new Vector3(0, -1, 0);

                Ray ray = Camera.main.ScreenPointToRay(new Vector3(Screen.width / 2, Screen.height / 2, 0));
                if (Physics.Raycast(ray, out hit, 100))
                {
                    transform.RotateAround(hit.point, Vector3.up, -1);
                }

                //transform.eulerAngles = transform.eulerAngles - rotateValue;
                facing    = CameraFacing.Instance.getFacing();
                is_rotate = true;
            }


            if ((vsp != 0) || (hsp != 0) || (scrollSp != 0))
            {
                Vector3 verticalMove = new Vector3(0, scrollSp, 0);
                Vector3 lateralMove  = hsp * transform.right;
                Vector3 forwardMove  = transform.forward;
                forwardMove.y = 0;
                forwardMove.Normalize();
                forwardMove *= vsp;
                Vector3 move = verticalMove + lateralMove + forwardMove;

                if (transform.position.y + move.y > minHeight && transform.position.y + move.y < maxHeight)
                {
                    is_move             = true;
                    transform.position += move;
                }
            }

            if (is_rotate || is_move)
            {
                CameraEvents.cameraRotate.Invoke(new CameraEventData(transform.eulerAngles.y, transform.position, old_position));
            }
        }
Ejemplo n.º 4
0
 // Start is called before the first frame update
 void Start()
 {
     _face = unitFacing.E;
     _form = new UnitFormation();
 }