Fix of collision layers

This commit is contained in:
SDraw 2025-06-29 15:42:29 +03:00
parent aef5af99af
commit 7f29079109
No known key found for this signature in database
GPG key ID: BB95B4DAB2BB8BB5
3 changed files with 17 additions and 6 deletions

View file

@ -149,7 +149,7 @@ namespace ml_ppu
Vector3 l_armPos = (l_avatarMatInv * m_armLeft.GetMatrix()).GetPosition();
m_collider = new GameObject("[Collider]").AddComponent<CapsuleCollider>();
m_collider.gameObject.layer = CVRLayers.PlayerClone;
m_collider.gameObject.layer = CVRLayers.PlayerLocal;
m_collider.transform.parent = this.transform;
m_collider.isTrigger = true;
m_collider.height = Vector3.Distance(l_hipsPos, new Vector3(0f, l_armPos.y, l_armPos.z));

View file

@ -42,7 +42,7 @@ namespace ml_prm
}
if(collider != null)
BetterBetterCharacterController.Instance.IgnoreCollision(collider);
RemoveGameCollision();
}
void Start()
@ -127,6 +127,8 @@ namespace ml_prm
m_rigidBody.isKinematic = p_state;
m_rigidBody.collisionDetectionMode = (p_state ? CollisionDetectionMode.Discrete : CollisionDetectionMode.ContinuousDynamic);
}
if(collider != null)
collider.isTrigger = p_state;
if(m_physicsInfluencer != null)
m_physicsInfluencer.enabled = !p_state;
}
@ -191,7 +193,7 @@ namespace ml_prm
m_ready = true;
}
if(collider != null)
BetterBetterCharacterController.Instance.IgnoreCollision(collider);
RemoveGameCollision();
}
void Attach(CVRPointer p_pointer)
@ -201,7 +203,7 @@ namespace ml_prm
m_attachedPointer = p_pointer;
GameObject l_attachPoint = new GameObject("[AttachPoint]");
l_attachPoint.layer = CVRLayers.PlayerClone;
l_attachPoint.layer = CVRLayers.PlayerLocal;
m_attachTransform = l_attachPoint.transform;
m_attachTransform.parent = p_pointer.transform;
@ -235,6 +237,15 @@ namespace ml_prm
}
}
void RemoveGameCollision()
{
Physics.IgnoreCollision(collider, BetterBetterCharacterController.Instance.Collider, true);
Physics.IgnoreCollision(collider, BetterBetterCharacterController.Instance.KinematicTriggerProxy.Collider, true);
Physics.IgnoreCollision(collider, BetterBetterCharacterController.Instance.NonKinematicProxy.Collider, true);
Physics.IgnoreCollision(collider, BetterBetterCharacterController.Instance.SphereProxy.Collider, true);
BetterBetterCharacterController.Instance.IgnoreCollision(collider);
}
// CVRTriggerVolume
public void TriggerEnter(CVRPointer pointer)
{

View file

@ -311,7 +311,7 @@ namespace ml_prm
BipedRagdollReferences l_avatarReferences = BipedRagdollReferences.FromAvatar(PlayerSetup.Instance.Animator);
m_puppetRoot = new GameObject("Root").transform;
m_puppetRoot.gameObject.layer = CVRLayers.PlayerClone;
m_puppetRoot.gameObject.layer = CVRLayers.PlayerLocal;
m_puppetRoot.parent = m_puppet;
m_puppetRoot.position = m_avatarTransform.position;
m_puppetRoot.rotation = m_avatarTransform.rotation;
@ -775,7 +775,7 @@ namespace ml_prm
static Transform CloneTransform(Transform p_source, Transform p_parent, string p_name)
{
Transform l_target = new GameObject(p_name).transform;
l_target.gameObject.layer = CVRLayers.PlayerClone;
l_target.gameObject.layer = CVRLayers.PlayerLocal;
l_target.parent = p_parent;
p_source.CopyGlobal(l_target);
return l_target;