public void StartInteraction(IDynamic otherDynamic) { Interacting = true; _tempDynamic = otherDynamic; _hero.SetWalkingActivation(false, true); _hero.SetStickinessActivation(false); var otherCollider = ((MonoBehaviour)otherDynamic).GetComponent <Collider2D>(); _cloneOtherDynamic = _poolManager.GetPoolable <DynamicCollider>(otherCollider.transform.position, otherCollider.transform.rotation, 1, otherDynamic.PoolableType, defaultParent: false); _cloneOtherDynamic.transform.localScale = otherCollider.transform.localScale; _cloneHeroCollider = _poolManager.GetPoolable <DynamicNinjaCollider>(transform.position, transform.rotation, defaultParent: false); CloneHeroStickiness = _cloneHeroCollider.GetComponent <Stickiness>(); _cloneHero = _cloneHeroCollider.GetComponent <DynamicNinja>(); _cloneHero.SetNinja(_hero); CloneHeroStickiness.Awake(); CloneHeroStickiness.Start(); CloneHeroStickiness.ContactPoint.SetParent(_cloneOtherDynamic.Transform, true); _cloneHeroCollider.Transform.SetParent(_cloneOtherDynamic.Transform, true); _previousPosition = _cloneHeroCollider.Transform.localPosition; _hero.Transform.SetParent(otherCollider.transform, true); _hero.Stickiness.Collider.isTrigger = true; _hero.Stickiness.Rigidbody.angularVelocity = 0; _hero.Stickiness.Rigidbody.velocity = Vector2.zero; CloneHeroStickiness.ReactToObstacle(_cloneOtherDynamic, _hero.Stickiness.GetContactPosition()); }
private void HandleDynamicVsHeightMapCollision( DynamicCollider dynCollider, HeightMapCollider hMapCollider, List <Contact> contacts, List <Segment> coarseContacts) { // position of bounding sphere in world coordinates Vector3 spherePos = dynCollider.BoundingSphere.CenterW; float radius = dynCollider.BoundingSphere.Radius; // filtering the triangle grid with the sphere projection hMapCollider.TriGrid.FilterBySphereProjection(spherePos, radius); foreach (Triangle tri in hMapCollider.TriGrid) { Vector3Int ind = hMapCollider.TriGrid.CurrentIndices; colors[ind.x] = colors[ind.y] = colors[ind.z] = Color.blue; if (IntersectionTest.SphereVsTriangle(spherePos, radius, tri)) { if (dynCollider is CSACollider) { // curves vs triangle } else if (dynCollider is BruteForceCollider) { // triangles vs triangle } else if (dynCollider is VertexCollider) { // vertices vs triangle } } } }
public DynamicColliderCreationEventArgs(DynamicCollider collider) { Collider = collider; }