16/02/27 16:23:02.61 x8pD4Atx.net
>>879
2Dとかやってないのでアレだが
1については>>880のいう通り。unity的なセオリーとしては左右はMovePositionでやる、って感じか?
左右については例えばHorizontalのポジティブネガティブに割り当ててGravityを1とかにして
Axisを使えばピタリと止まることもなくなる。
2についてはpubulic Transform childOb;とかで変数をもっておいて
そこにインスペクターで子供オブジェクトをD&Dしておく、というのがUnity的なセオリーとはいえる。
名前が確定していればStart内でTransform.Findでもいい。
public float kickPower=0;//移動とジャンプの距離
public LayerMask Check;//接地判定で判定するためのレイヤーを取得
private bool GROUNDCHECK = false;
public Transform childObj;//ここに子供をD&D.
Rigidbody2D thisRigid;
void Start(){
thisRigid=GetComponent<Rigidbody2D>();
childObje=transform.Find("Child");//名前が判っていれば.
}
void FixedUpdate ()
{//jump処理
GROUNDCHECK = Physics2D.Linecast(transform.position,childObj, Check);
if (GROUNDCHECK&&Input.GetButtonDown("Jump"))
{
thisRigid.AddForce(Vector2.up * kickPower,ForceMode2D.Impulse);
}
thisRigid.MovePosition(thisRigid.position+Vector2.right *Input.GetAxis("Horizontal")* kickPower*Time.deltaTime);
}