other.transform.SetParent испортил масштаб моего плеера - PullRequest
0 голосов
/ 03 июня 2018

Итак, я работал над тем, чтобы сделать мою движущуюся платформу стабильной для моего игрока.Я использовал void OnCollisionEnter2D(Collision2D other) 'внутри скрипта контейнера платформы и использовал' player.transform.SetParent(plankTranform); ', но установка проигрывателя transform на дочернее преобразование платформы портит масштаб игрока.

Мое предположение заключается в том, что свойство scale платформы переносится в transform.scale игрока.Есть ли способ просто установить tranform.position платформы в качестве родительского элемента transform.position?

игрока. Использование player.transform.SetParent(plankTranform); автоматически устанавливает свойства transform 3, т.е. (положение, масштаб, вращение), для дочернего объекта.Я действительно не хочу иметь дело с масштабом и вращением в этом случае

public class BrickMoveVErtical : MonoBehaviour {
    public Vector3 positionOne;
    public Vector3 positiontwo;
    public Vector3 nextposition;
    public Transform plankTranform;

    /*Empty object is already made on unity editor and its parent of 
     platform(Plank) and other  
   empty object "pointB". Point "B" is already mapped on editor and platform 
     is set to go from  its original pos to point B */

    public Transform positionBTransform;
    public float speed;

    // Use this for initialization
    void Start () {
        positionOne = plankTranform.localPosition;
        positiontwo = positionBTransform.localPosition;
        nextposition = positiontwo;
    }

    // Update is called once per frame
    void Update () {
        move();
            }
    private void move() {
   plankTranform.localPosition = Vector3.MoveTowards(plankTranform.localPosition,nextposition,Time.deltaTime*speed);
        if(Vector3.Distance(plankTranform.localPosition,nextposition)<0.1)
        { changeMovementPlank(); }
    }
    void changeMovementPlank() {
        nextposition = nextposition != positionOne ? positionOne : positiontwo;
    }   

    void OnCollisionEnter2D(Collision2D other)
    {  if(other.gameObject.tag=="Player")
        {
            other.transform.SetParent(plankTranform);


        }

    }   
    void OnCollisionExit2D(Collision2D other)
    {
        other.transform.SetParent(null);
    }                  

}

1 Ответ

0 голосов
/ 03 июня 2018

Использование SetParent(parent, true);

worldPositionStays

Если установлено значение true, относительная позиция, масштаб и поворот родительского элемента изменяются таким образом, что объект остается прежниммировое космическое положение, вращение и масштаб, как и раньше.

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