Итак, я работал над тем, чтобы сделать мою движущуюся платформу стабильной для моего игрока.Я использовал 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);
}
}