Unityメモ 移動する床とプレイヤー 親子関係
プレイヤーのスクリプト
レイでの判定分け レイヤー使用
void OnCollisionStay(Collision col)
{
if (Physics.Linecast(m_charaRay.position, m_charaRay.position + Vector3.down, LayerMask.GetMask("Ground")))
{
m_isGroundCollider = true;
}
else if(Physics.Linecast(m_charaRay.position, m_charaRay.position + Vector3.down,LayerMask.GetMask("MoveGround")))
{
m_isGroundCollider = true;
gameObject.transform.SetParent(col.transform);//親子関係を設定
}
else
{
m_isGroundCollider = false;
gameObject.transform.SetParent(null);//親子関係を外す
}
}
注意点
プレイヤーでの移動方法で挙動が変わってくるので現在は
transform.positionを操作している
Vector3 moveDir = Vector3.zero;
if (Input.GetKey(KeyCode.W))
{
moveDir += forwardDir;
}
if (Input.GetKey(KeyCode.S))
{
moveDir -= forwardDir;
}
if (Input.GetKey(KeyCode.D))
{
moveDir.z += m_moveSpeed;
}
if (Input.GetKey(KeyCode.A))
{
moveDir.z -= m_moveSpeed;
}
//トランスフォームで移動させたら移動する床でも子オブジェクト状態でも移動できる
if (moveDir.sqrMagnitude > Mathf.Epsilon)
{
transform.position += moveDir;
}
Author And Source
この問題について(Unityメモ 移動する床とプレイヤー 親子関係), 我々は、より多くの情報をここで見つけました https://qiita.com/kamisiro/items/09a216dc0f3cd4f4db57著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .