ScreenPointtoRay Создание проблем для мыши следовать сценарию - PullRequest
0 голосов
/ 26 сентября 2018

Меня смущает, почему мой скрипт следования за игровым курсором, похоже, не работает по-разному в зависимости от положения персонажа.Я хочу, чтобы игрок нажал «E», если игрок наводит курсор мыши на руку персонажа, щелкает и тащит руку, которая будет двигаться вверх и вниз после положения мыши.

Сценарий работал до тех пор, пока я не переместил своего персонажа.вдоль оси X и обнаружил, что место, которое мышь должна была щелкнуть и перетащить, осталось в исходном положении руки, даже когда персонаж, его рука и камера отодвинулись.Кто-нибудь знает, почему?Я вставил в скрипт поиск позиции мыши и скрипт для того, чтобы мой игровой объект копировал позицию мыши.

Я также загрузил несколько видео скрипта, работающего на YouTube https://www.youtube.com/watch?v=grhnqckOfc0 https://www.youtube.com/watch?v=ZlLLgnU8yMc

Спасибо за ваше время!

public static class GameCursor

{

 public static LayerMask mask;


 public static Vector2 WorldPosition
 {
     get
     {
         float distance;
         int mask = 1<<9; //setting layer mask to layer 9
         mask = ~mask; //setting the layer mask to ignore layer(~)
             //adding in the layermask to raycast will ignore 9th layer



         var ray = Camera.main.ScreenPointToRay(Input.mousePosition);
         Debug.DrawRay(ray.origin, ray.direction * 10000f, Color.black);
         if (_gamePlane.Raycast(ray, out distance))
             return ray.GetPoint(distance);

return Vector2.zero;

     }
 }
 private static Plane _gamePlane = new Plane(Vector3.forward,0);

}

 public GameObject ArmR;


 public static Vector2 OffsetPoint;

 public Vector2 OffsetVec2;

 void Start ()

 {

 }


 private void Update()
 {

     if (Input.GetKey (KeyCode.E)) {


         Follow ();
     }

     if (Input.GetKeyUp (KeyCode.E)) {


     }

     //print (transform.eulerAngles.z);
     //Offset.transform.position = OffsetVec2;
     OffsetPoint = GameCursor.WorldPosition + OffsetVec2;

     Vector3 clampedRotation = transform.eulerAngles;
     // Clamp the z value
     if (clampedRotation.z > 90.0f) clampedRotation.z = 180.0f - clampedRotation.z;{
         clampedRotation.z = Mathf.Clamp (clampedRotation.z, 0, 90);
         clampedRotation.z = Mathf.Clamp (clampedRotation.z, -90, 180);

     }

     // assign the clamped rotation
     ArmR.transform.rotation = Quaternion.Euler(clampedRotation);


     //if(ArmR.transform.eulerAngles.z >= 350 || transform.eulerAngles.z <= 270){

         //Debug.Log ("no");



     //}

     if(ArmR.transform.eulerAngles.z == 0){

         //Debug.Log ("AT0");

     }

     if(ArmR.transform.eulerAngles.z == 90){

         //Debug.Log ("AT90");




     }


     }

void Follow () {

     ArmR.transform.up = -GameCursor.WorldPosition + OffsetVec2;
 }

 private void OnDrawGizmos()
 {
     Gizmos.DrawIcon(GameCursor.WorldPosition, "wallll", true);

 }

}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...