private void StartMove() { m_MoveDuration = 0; m_MoveElapsed = 0; m_IsMoving = true; Vector3 rayDirRevert = m_BulletInfo.MoveDir * (-1); Vector3 impactScrPos = m_BulletInfo.ImpactSrcPos + rayDirRevert * m_BulletInfo.MoveImpactRadius; Ray ray = new Ray(impactScrPos, m_BulletInfo.MoveDir); RaycastHit[] targetHitInfos = Physics.SphereCastAll(ray, m_BulletInfo.MoveImpactRadius, m_BulletInfo.MoveDistanceMax); Script_Util.DrawPhysicsSphereCastLine(ray, m_BulletInfo.MoveDistanceMax, m_BulletInfo.MoveImpactRadius, Color.red, 10.0f); if (targetHitInfos != null && targetHitInfos.Length > 0) { Script_Util.SortRaycastHit(ref targetHitInfos); m_IsHit = true; m_MoveHitInfo = targetHitInfos[0]; m_MoveDuration = m_MoveHitInfo.distance / m_BulletInfo.MoveSpeed; m_HitPos = m_MoveHitInfo.point; } else { m_IsHit = false; m_MoveDuration = m_BulletInfo.MoveDistanceMax / m_BulletInfo.MoveSpeed; m_HitPos = Script_Util.CaculateRelativePos(m_BulletInfo.MoveStartPos, m_BulletInfo.MoveDir, m_BulletInfo.MoveDistanceMax); } }
private void StartMove() { Ray ray = new Ray(m_BulletInfo.MoveStartPos, m_BulletInfo.MoveDir); if (Physics.Raycast(ray, out m_MoveHitInfo, m_BulletInfo.MoveDistanceMax, (int)SceneLayerType.SceneStatic)) { m_IsHit = true; m_HitPos = m_MoveHitInfo.point; } else { m_IsHit = false; m_HitPos = Script_Util.CaculateRelativePos(m_BulletInfo.MoveStartPos, m_BulletInfo.MoveDir, m_BulletInfo.MoveDistanceMax); } }